将 unixtime 转换为 DateTime 时出现问题。
我传入参数 1663869600,这是 22 年 9 月 22 日。但在代码中,在检测后,我得到日期 1/20/1970 6:11:09 AM。
这是为什么 ?
我将通过以下方式转换日期:
DateTime start = DateTimeOffset.FromUnixTimeMilliseconds(request.StartTime).DateTime;
var startUtc = DateTime.SpecifyKind(start, DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
和
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var startUtc = dtDateTime.AddMilliseconds(request.StartTime).ToLocalTime();
Run Code Online (Sandbox Code Playgroud)
Unix时间是自纪元以来的秒数(而不是毫秒)(正如@Gus正确提到的那样)。所以解决方案是使用FromUnixTimeSeconds代替FromUnixTimeMilliseconds和AddSeconds代替AddMilliseconds。
DateTime start = DateTimeOffset.FromUnixTimeSeconds(1663869600).DateTime;
var startUtc = DateTime.SpecifyKind(start, DateTimeKind.Utc);
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var startUtc2 = dtDateTime.AddSeconds(1663869600).ToLocalTime();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3029 次 |
| 最近记录: |