【发布时间】:2013-08-14 19:32:02
【问题描述】:
我正在使用 windows phone 8,需要将 DateTime 对象转换为 unix 时间戳。
我知道有很多关于如何做到这一点的帖子,但我有一个奇怪的错误,我就是想不通。
我正在这样做:
double val = (value.Ticks - New DateTime(1970,1,1).Ticks) / TimeSpan.TicksPerSecond;
其中 value 是我要转换为 unix 时间戳的 DateTime 对象。 我知道该值包含正确的时间, (在调试期间我可以看到它有正确的日期+时间)
但转换后的 unix 值总是 +2 小时。 时区肯定有问题。
有人可以帮助我吗?我发现在 WP 下处理时区非常烦人,因为除了 UTC 或 Local 之外,没有其他方法可以转换为特定时区。
【问题讨论】:
-
我已经添加了 c# 标签,因为我认为那是您使用的语言。如果不是,请将标签替换为您实际使用的语言。
-
Unix time conversions in C# 的可能重复项
-
不要那样做。 Jon Skeet's answer 这个问题有你需要的一切。但是您需要了解并非所有
DateTimes 都是平等的。.Kind很重要 - 这可能解释了您提到的差异。 -
是的,我找到了 Jon Skeet 的答案,我尝试了他的解决方案。假设它在我的国家是 12:00,那么 UTC 时间是 10:00,(DateTime.UtcNow - UnixEpoch).TotalSeconds(UnixEpoch 是 utc)的结果是 12:00,这对我来说是正确的时间,但我不明白为什么,因为 DateTime.UtcNow 关闭了 2 小时。这里的问题是我也需要它在不同的时区工作。
标签: c# datetime timezone unix-timestamp