Como posso converter um timestamp Unix para DateTime e vice versa?
Existe este código de exemplo, mas depois começa a falar de problemas de milissegundos / nanossegundos.
A mesma questão está no MSDN, Segundos desde a época Unix em C#.
Isto é o que a I'tenho até agora:
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
Aqui'é o que você precisa:
Ou, para Java (que é diferente porque o carimbo da hora é em milissegundos, não em segundos):
Encontrei a resposta certa apenas comparando a conversão a 1/1/1970 sem o ajuste da hora local;
Um tick Unix é 1 segundo (se bem me lembro), e um tick .NET é 100 nanossegundos.
Se você'tem encontrado problemas com nanossegundos, você pode querer tentar usar AddTick(10000000 * valor).