我正在尝试将C#DateTime变量转换为Unix时间,即自1970年1月1日以来的秒数.看起来DateTime实际上是自0001年1月1日以来的"滴答"数量.
我目前的想法是从我的DateTime中减去1970年1月1日这样:
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
Dav*_*sky 182
基本上就是这样.这些是我用来转换为Unix纪元时间的方法:
public static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
return origin.AddSeconds(timestamp);
}
public static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan diff = date.ToUniversalTime() - origin;
return Math.Floor(diff.TotalSeconds);
}
Run Code Online (Sandbox Code Playgroud)
cod*_*key 44
如果系统的其余部分使用DateTimeOffset而不是DateTime,那么有一个非常方便的功能:
long unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();
Run Code Online (Sandbox Code Playgroud)
Caf*_*eek 22
我唯一看到的是它应该是自UTC 1970年1月1日午夜以来
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc));
return span.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 14
您可能希望使用DateTime.UtcNow来避免时区问题
TimeSpan span= DateTime.UtcNow.Subtract(new DateTime(1970,1,1,0,0,0));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148044 次 |
| 最近记录: |