gpt4 book ai didi

C# 与 Unix 时间相互转换 - 损失了 1 天

转载 作者:行者123 更新时间:2023-12-04 00:52:31 24 4
gpt4 key购买 nike

这是代码:

var date = DateTime.Now.Date;
var ms = (long)(date - DateTimeOffset.UnixEpoch).TotalMilliseconds;
var date1 = DateTimeOffset.FromUnixTimeMilliseconds(ms).DateTime.Date;
日期是 24 号,日期 1 是 23 号
他们为什么不匹配?

最佳答案

使用 DateTimeOffset.FromUnixTimeMilliseconds(ms).LocalDateTime .DateTime.NowKind = Local所以它偏离了你的 UTC 偏移量。
你可以看到它:

var kind = DateTime.Now.Date.Kind;
然后你可以用“种类”做一个小测试:
var date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local);
var ms = (long)(date - DateTimeOffset.UnixEpoch).TotalMilliseconds;
多少钱 ms是?根据冬季/夏季时间和您所在的位置,它可能不是 0。
所以你的 ms包括您的 UTC 偏移量。现在你必须:
var date1 = DateTimeOffset.FromUnixTimeMilliseconds(ms).LocalDateTime;
让我们希望您仍然处于“原始”UTC 偏移量中(因此在 date 的计算和 date1 的计算之间没有足够的天数让您在冬/夏时间之间切换)
(如果你做的一切都正确,你真的不需要 .Date 之后的 .LocalDateTime ,因为日期应该已经是 00:00:00 )

关于C# 与 Unix 时间相互转换 - 损失了 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65437346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com