Hablar de algunas de las cosas que .netcore Pozo de la hora del sistema y la ruta del archivo

Hablar .netcore Pit algo que la hora del sistema y la ruta del archivo

Hola, junior a todo el mundo socio Hola, recientemente ocupado trabajando desde hace mucho tiempo y no hay ningún punto de compartir cosas. Este fin de semana, más de dos días de clases. nuevos proyectos de la compañía se basan en .netcore a desarrollar, en el proceso de desarrollo, también pisaron una cisterna, dos pozos en resumen adelantado, estos dos pozos son preguntas acerca de la compatibilidad con Linux (CentOS) y las ventanas. Nuestra interfaz entorno de desarrollo llamar entorno Windows el principio ha sido desplegado para funcionar como de costumbre, pero para desplegar bajo Linux (CentOS) el medio ambiente, se han producido estas dos cuestiones, de hecho, el problema es simple: Obtener la hora del sistema, 8 veces menos real horas; archivo de nombre de ruta del archivo a ser identificado. Aquí hay una solución sencilla de compartir, de hecho, si usted vio que una razón muy simple por compartirlo, cuando comience .netcore usuario, puede tener un efecto rápido, hey!

 

A, sistema de adquisición de la DateTime.Now menos tiempo durante ocho horas

.net central del proyecto, para desplegar Linux ( cuando en CentOS), y encontró tiempo para obtener DateTime.Now incompatible con Windows, llegar a la hora del sistema actual inferior al sistema de tiempo de 8 horas, se encuentra un problema, que por primera vez pensar en las diferencias horarias. búsqueda en Internet, he encontrado que hay una gran cantidad de pequeños socios encontrado el mismo problema, han dado las soluciones correspondientes, de la siguiente manera:

razón específica: diferentes zonas horarias tanto en Linux y Windows utilizan en ambas zonas horarias son: Linux: la IANA , de Windows: Windows Time Zone identificaciones. Este último es el culpable él!

Después de encontrar la causa, entonces, ¿cómo se puede solucionar? Muy forma sencilla es utilizar los mismos dos zonas horarias no se salgan bien, en última instancia, la aplicación uniforme de la IANA, sobre la aplicación puede utilizar las bibliotecas de terceros: NodaTime. códigos específicos son los siguientes:

       

/// <summary> 

        /// Obtener la hora actual 

        /// </ summary> 

        /// <> Devuelve hora actual del sistema </ Devoluciones> 

        public static GetSysDateTimeNow el DateTime () 

        { 

            el SystemClock.Instance.GetCurrentInstant instantánea = NOW () ; 

            var shanghaiZone DateTimeZoneProviders.Tzdb = [ "Asia / de Shanghai"]; 

            retorno now.InZone (shanghaiZone) .ToDateTimeUnspecified (); 

      }

  

No es tan fácil?

De hecho, utilizamos el momento en que habrá una variedad de maneras, va a hacer una gran cantidad de la conversión del formato de tiempo, tales como: aaaa-MM-DD HH: MM: Tiempo de formato SS, el tiempo y la conversión de fecha y hora y así sucesivamente. Con el fin de unificar el funcionamiento normal, el proyecto actual, que operan de acuerdo con el tiempo real necesario para hacer un paquete unificado, por supuesto, a los ojos de muchos no es el contenido más técnico, pero también oh, su propósito es lograr un control unificado, conveniencia gestión, mejorar la reutilización de código. Ahora también publicado el código, si es necesario, se puede hacer referencia a, y también genera una bolsa, lo puso en Nuget, el nombre del paquete (XYH.Tools.DateTimeTools), si es necesario, puede bloquear abajo utilizar.

He subido a la fuente en GitHub, estamos interesados lata archivo de abajo

Dirección de origen: https://github.com/xuyuanhong0902/XYH.Tools.git

fuente:

/ * ================================================ ============================== 
 * descripción funcional: Todas las operaciones relacionadas con el momento de la recogida   
 * creador: programa de intercambio viaje a la práctica de micro señal: 15908150902 
 * fecha de creación: 03/08/2020 
 * la versión CLR: 1.0 
 * ================================ * ============================================== / 

a usando NodaTime ; 
la utilización del sistema; 

/// <summary> 
/// clase de ayuda común 
/// </ summary> 
XYH.Tools.DateTimeTools de espacio de nombres 
{ 
    /// <summary> 
    /// clase de la acción relacionada con el tiempo 
    /// </ summary > 
    DateTimeTools clase public static 
    { 
        método #region de adquirir la hora actual del sistema de varios (regreso + tiempo cadena con formato) 

        /// <summary> 
        /// obtener la hora actual
        /// </ summary> 
            retorno GetSysDateTimeNow ().ToStringYMD24HMSF ();
        /// <volverá> hora actual del sistema </ Devoluciones> 
        public static GetSysDateTimeNow el DateTime () 
        { 
            el SystemClock.Instance.GetCurrentInstant instantánea = NOW (); 
            var shanghaiZone DateTimeZoneProviders.Tzdb = [ "Asia / Shanghai"]; 
            now.InZone retorno ( shanghaiZone) .ToDateTimeUnspecified (); 
        } 

        /// <summary> 
        /// Obtener la hora actual cadena de formato de reloj de 24 horas se formatea como (el mM-dD-AAAA HH: mm: ss.fff) 
        /// < / Resumen> 
        /// <devoluciones> string hora actual del sistema con formato (el dD-mM-AAAA HH: mm: ss.fff) </ Devoluciones> 
        public static string GetSysDateTimeNowStringYMD24HMSF () 
        { 
        } 

        /// <summary>
        /// Obtener la hora actual en 12 horas de formato de cadena tiene el formato (MM-DD-AAAA HH: mm: ss.fff) 
        /// </ resumen> 
        /// <Devoluciones> sistema actual formateada cadena de tiempo (la dD-mM-AAAA HH: mm: ss.fff) </ Devoluciones> 
        public static string GetSysDateTimeNowStringYMD12HMSF (al este el momento DateTime) 
        { 
            . GetSysDateTimeNow de retorno () ToStringYMD12HMSF (); 
        } 

        /// <summary> 
        /// obtener la cadena de formato de 24 horas de tiempo actual está formateado como (el mM-dD-AAAA HH: mM: SS) 
        /// </ resumen> 
        /// <Devoluciones> hora actual del sistema cadena con formato (AAAA HH-mM-dd: mm: ss) </ Devoluciones> 
        cadena GetSysDateTimeNowStringYMD24HMS estáticos públicos (el este el momento DateTime) 
        { 
            volver GetSysDateTimeNow () ToStringYMD24HMS () ;.
        } 

        /// <summary> 
        /// Obtener la hora actual en 12 horas de formato de cadena tiene el formato (MM-DD-AAAA HH: MM: SS) 
        /// </ resumen> 
        /// <Devoluciones> la cadena de hora actual del sistema con formato (el dD-mM-AAAA HH: mM: SS) </ Devoluciones> 
        GetSysDateTimeNowStringYMD12HMS estáticas pública de la serie (esto el tiempo DateTime) 
        { 
            ; GetSysDateTimeNow de retorno () (ToStringYMD12HMS). 
        } 

        /// <summary> 
        /// obtener la hora actual tiene el formato de formato de cadena (aaaa-MM-dd) 
        /// </ resumen> 
        /// <Devoluciones> hora actual del sistema cadena con formato (aAAA-MM-dd) </ Devoluciones> 
        cadena GetSysDateTimeNowStringYMD estáticos públicos (el este el momento DateTime) 
        { 
            volver GetSysDateTimeNow () ToStringYMD () .;
        } 

        #Endregion 
 
        #region método de formato de extensión varios de los DateTime

        /// <summary> 
        /// formato de 24 horas se formatea como (el MM-DD-AAAA HH: mm: ss.fff) 
        /// </ resumen> 
        /// <param name = "tiempo"> formato de hora es </ param> 
        /// <devoluciones> hora con formato de cadena (la dD-mM-AAAA HH: mm: ss.fff) </ Devoluciones> 
        public static ToStringYMD24HMSF cadena (el este del DateTime tiempo) 
        { 
            time.ToString retorno ( "el mM-dD-aAAA HH: mm: ss.fff"); 
        } 

        /// <Resumen> 
        formato de hora /// 12 horas se formatea como (aaaa-mm-dd HH: mm: ss.fff) 
        /// </ resumen> 
        /// <param name = "tiempo"> formato de tiempo </ param> 
        /// <volverá>Formateado cadena de tiempo (hh aaaa-MM-dd: mm: ss.fff) </ retornos>
        ToStringYMD12HMSF public String estático (el este el momento DateTime)  
        { 
            time.ToString retorno ( "aaaa hh-mm-dd: mm: ss.fff");
        } 

        /// <summary> 
        /// 24 horas formato de hora está formateado como (el MM-DD-AAAA HH: MM: SS) 
        /// </ resumen> 
        // / <param name = "tiempo" > formateado tiempo </ param> 
        /// <Devoluciones> tiempo cadena con formato (el mM-dD-AAAA HH: mM: SS) </ Devoluciones> 
        ToStringYMD24HMS cadena estática pública (el este el momento DateTime) 
        { 
            time.ToString retorno ( "el mM-dD-aAAA HH: mM: SS"); 
        } 

        /// <summary> 
        /// formato de 12 horas se formatea como (aaaa-mM HH dd: mm: ss) 
        /// </ resumen> 
        /// <param name = "tiempo"> tiempo formateado </ param> 
        /// <retornos> el tiempo con formato de cadena (hh aaaa-MM-dd: mm: ss) </ retornos>
        ToStringYMD12HMS public String estático (el este el momento DateTime) 
        { 
        { 
            time.ToString retorno ( "aaaa hh-mm-dd: mm: ss");
        } 

        /// <summary> 
        /// formato tiene el formato de tiempo (AAAA-MM-dd) 
        /// </ resumen> 
        /// <param name = "Time"> tiempo formateado </ param> 
        /// <retornos> cadena de tiempo (aaaa-MM-dd) < / retornos> formateado 
        public static string ToStringYMD (al este el momento DateTime) 
        { 
            time.ToString retorno ( "el dD-MM-aAAA"); 
        } 

        # endRegion 

        #region adquiere una marca de tiempo 

        /// <summary> 
        /// Get marca de tiempo (en segundos) 
        /// </ resumen> 
        /// <Devoluciones> sello segunda vez </ Devoluciones> 
        public static largo GetSecondTimestamp () 
            // para 01/01/1970 por segunda vez a partir de la diferencia entre el tiempo actual del sistema es la segunda marca de tiempo
            TS = GetSysDateTimeNow la TimeSpan () - el DateTime New Nueva (1970 ,. 1 ,. 1, 0, 0, 0, 0); 
            retorno Convert.ToInt64 (ts.TotalSeconds); 
        } 

        /// <summary> 
        /// Get marca de tiempo (en milisegundos ) 
        /// </ resumen> 
        /// <Devoluciones> sello ms tiempo </ Devoluciones> 
        public static largo GetMilliSecondTimestamp () 
        { 
            // milisegundos como la diferencia de tiempo al inicio 01.01.1970 tiempo actual es el mismo sistema ms estampar 
            la TimeSpan GetSysDateTimeNow = TS () - nuevo nuevo el DateTime (1970 ,. 1 ,. 1, 0, 0, 0, 0); 
            retorno Convert.ToInt64 (ts.TotalMilliseconds); 
        } 

        #endregion 

        #region un sello de tiempo se convierte en una 

        /// <summary> 
        /// convierte una hora segundo formato de marca de tiempo (seg) 
        /// </ resumen> 
        /// <param name = "secondTimestamp"> segunda marca de tiempo </ param> 
        /// <Devoluciones> tiempo convertida </ Devoluciones> 
        estática pública de fecha y hora? SecondStampToDateTime (Long secondTimestamp) 
        { 
            // hacer una determinación sencilla 
            SI (secondTimestamp <= 0) 
            { 
                return null; 
            } 

            // iniciar el tiempo de 01.01.1970, mediante el cálculo de la diferencia de tiempo con el que se calcula el correspondiente tiempo de 
            DateTime = new nuevo System.DateTime dateTime (1970 ,. 1 ,. 1, 0, 0, 0, 0); 
            dateTime = dateTime.AddSeconds (secondTimestamp) .ToLocalTime (); 
            retorno dateTime; 
        } 

        /// <Resumen>
        /// convierte una cadena de formato sello segundo tiempo (s)  
        /// </ summary>
        /// <param name = "secondTimestampStr"> cadena sec sello de tiempo </ param> 
        /// <volverá> tiempo convertida </ devoluciones > 
        ? SecondStampToDateTime el public static DateTime (cadena secondTimestampStr) 
        { 
            // si está vacío, entonces el nulo retorno directo 
            SI (String.IsNullOrEmpty (secondTimestampStr)) 
            { 
                retorno nulo; 
            } 

            // primera cadena se convierte en una marca de tiempo digital de 
            larga secondTimestamp = 0 ; 
            long.TryParse (secondTimestampStr, secondTimestamp OUT); 

            // llamar a 
            volver SecondStampToDateTime (secondTimestamp); 
        } 

        /// <summary> 
        /// convierte una cadena en formato de marca de tiempo de milisegundos (ms) 
        /// </ resumen> 
        /// <param name = "secondTimestampStr"> cadena de marca de tiempo ms </ param> 
        /// <volverá> tiempo convertida </ Devoluciones> 
        public static MilliSecondStampToDateTime el DateTime (Long secondTimestamp)? 
        { 
            // hacer una determinación sencilla 
            SI (secondTimestamp <= 0) 
            { 
                return null; 
            } 

            // iniciar el tiempo de 01/01/1970 por calcular una con la misma diferencia de tiempo, para calcular el tiempo que corresponde a 
            los dateTime dateTime System.DateTime nuevos nuevos = (1970 ,. 1 ,. 1, 0, 0, 0, 0); 
            dateTime = dateTime.AddMilliseconds (secondTimestamp) .ToLocalTime (); 

            retorno dateTime ;
        } 

        /// <summary>
        /// se convertirá en un momento en formato de indicación de milisegundos (ms) 
        /// </ resumen>
        /// <param name = "milliSecondStampStr" > sello de tiempo ms </ param> 
        /// <Devoluciones> tiempo convertida </ Devoluciones> 
        estática pública de fecha y hora? MilliSecondStampToDateTime (String milliSecondStampStr) 
        { 
            // si está vacío, y luego directamente devuelva null 
            IF (String.IsNullOrEmpty (milliSecondStampStr)) 
            { 
                return null; 
            } 

            // cadena se convierte primero en una marca de tiempo digital de 
            largo milliSecondStamp = 0; 
            long.TryParse (milliSecondStampStr, milliSecondStamp OUT); 

            // llamada a 
            volver MilliSecondStampToDateTime (milliSecondStamp) ; 
        } 

        #endregion 
    } 
}

  

En segundo lugar, el nombre de la ruta de archivo del archivo a ser identificado

Jaja, recientemente se encontró con una cosa interesante, es decir, en Windows, la ruta del archivo de la creación, es correcto, pero el despliegue de CentOS, crear un archivo, todos los caminos se han convertido en el nombre del archivo, todos los archivos en la raíz el directorio.

Internet para encontrar las razones, es la ruta del archivo al problema barra barra izquierda y derecha. En Windows, ya sea hacia la izquierda o la derecha barra barra, no hay problemas, pero sólo es compatible con la barra derecha en Linux, la ruta en el código utilizado en la operación, tienen el derecho a modificar la barra unificada, el problema está resuelto. Ruta del archivo media ruta / nombre del archivo

En tercer lugar, el resumen

En retrospectiva, estas dos cuestiones, los problemas de compatibilidad son sistemáticos, cuidadosamente pensar, es un problema habitual, especialmente si la ruta de acceso a este problema, que tiene que acostumbrarse a usar barras diagonales.

Vamos a escribir cuando .net programa, independientemente de si se va a implementar el uso de .netcore implementación del sistema Linux, debemos pensar también en la compatibilidad de los diferentes sistemas se utilizan en la realización de una forma común de lograr, luego hacer el proyecto actualizar, tiempo de migración, sería menos problemas. Hey, aferrarse a esto hoy, sigo Quiero compartir con ustedes otro paso real .netcore en la fosa. Gracias por leer.

 

 

Hola, junior a todo el mundo socio Hola, recientemente ocupado trabajando desde hace mucho tiempo y no hay ningún punto de compartir cosas. Este fin de semana, más de dos días de clases. nuevos proyectos de la compañía se basan en .netcore a desarrollar, en el proceso de desarrollo, también pisaron una cisterna, dos pozos en resumen adelantado, estos dos pozos son preguntas acerca de la compatibilidad con Linux (CentOS) y las ventanas. Nuestra interfaz entorno de desarrollo llamar entorno Windows el principio ha sido desplegado para funcionar como de costumbre, pero para desplegar bajo Linux (CentOS) el medio ambiente, se han producido estas dos cuestiones, de hecho, el problema es simple: Obtener la hora del sistema, 8 veces menos real horas; archivo de nombre de ruta del archivo a ser identificado. Aquí hay una solución sencilla de compartir, de hecho, si usted vio que una razón muy simple por compartirlo, cuando comience .netcore usuario, puede tener un efecto rápido, hey!

Supongo que te gusta

Origin www.cnblogs.com/xiaoXuZhi/p/netcoredatetime.html
Recomendado
Clasificación