¿Cómo puedo convertir una marca de tiempo Unix en DateTime y viceversa?
Hay este código de ejemplo, pero luego empieza a hablar de problemas de milisegundos / nanosegundos.
La misma pregunta está en MSDN, Segundos desde la época de Unix en C#.
Esto es lo que tengo hasta ahora:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
707
3
Esto es lo que necesita:
O, para Java (que es diferente porque la marca de tiempo está en milisegundos, no en segundos):
Encontré la respuesta correcta simplemente comparando la conversión al 1/1/1970 sin el ajuste de la hora local;
Un tick de Unix es 1 segundo (si recuerdo bien), y un tick de .NET es 100 nanosegundos.
Si tiene problemas con los nanosegundos, puede intentar usar AddTick(10000000 * valor).