online - Conversiones temporales de Unix en C#
timestamp unix date (2)
"Marca de tiempo de Unix" significa segundos desde la época en la mayoría de las situaciones en lugar de milisegundos ... ¡tenga cuidado! Sin embargo, cosas como Java usan "milisegundos desde la época", que puede ser lo que realmente le importa, a pesar de la herramienta que mostró. Realmente depende de lo que necesitas.
Además, no deberías estar haciendo nada con la hora local. Mantener el tiempo universal en todas partes.
Quisiera:
private static readonly DateTime UnixEpoch =
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public static long GetCurrentUnixTimestampMillis()
{
return (long) (DateTime.UtcNow - UnixEpoch).TotalMilliseconds;
}
public static DateTime DateTimeFromUnixTimestampMillis(long millis)
{
return UnixEpoch.AddMilliseconds(millis);
}
public static long GetCurrentUnixTimestampSeconds()
{
return (long) (DateTime.UtcNow - UnixEpoch).TotalSeconds;
}
public static DateTime DateTimeFromUnixTimestampSeconds(long seconds)
{
return UnixEpoch.AddSeconds(seconds);
}
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de obtener el GMT en tiempo Unix. Yo uso el siguiente código:
public static long GetGMTInMS()
{
var unixTime = DateTime.Now.ToUniversalTime() -
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return (long)unixTime.TotalMilliseconds;
}
Para luego convertir el tiempo de Unix a un objeto DatTime, uso esto:
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
{
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp).ToLocalTime();
return dtDateTime;
}
Cuando lo ejecuto, el GetGMTInMS()
1320249196267
. Cuando lo paso a UnixTimeStampToDateTime()
recibo {11/2/2011 11:53:16 AM}
Lo cual está bien. Ese es el momento correcto cuando ejecuté mi código. El problema que tengo es cuando trato de poner 1320249196267
en un convertidor de tiempo Unix, como this , devuelve el tiempo totalmente equivocado.
El otro problema, es que estoy en la zona horaria oriental. Esto devolvió el tiempo en mi zona horaria. ¿Esto es algo que maneja el objeto DateTime
o no obtengo el GMT?
El tiempo de UNIX es segundos desde 1/1/1970, no milisegundos. Cambie el código para usar segundos en lugar de milisegundos y debería funcionar,