1

我正在使用 Windows Phone 8,需要将 DateTime 对象转换为 unix 时间戳。

我知道有很多关于如何做到这一点的帖子,但我有一个奇怪的错误,我只是想不通。

我正在这样做:

double val = (value.Ticks - New DateTime(1970,1,1).Ticks) / TimeSpan.TicksPerSecond;

其中 value 是我要转换为 unix 时间戳的 DateTime 对象。我知道该值包含正确的时间,(在调试期间我可以看到它具有正确的日期+时间)

但转换后的 unix 值总是 +2 小时。时区一定有问题。

有人能帮我吗?我发现在 WP 下处理时区非常烦人,因为除了 UTC 或本地之外,没有任何方法可以转换为特定时区。

4

1 回答 1

2

根据this documentation,3参数构造函数DateTime

DateTime(Int32, Int32, Int32)

“将 DateTime 结构的新实例初始化为指定的年、月和日。” 它没有指定时区的方法,文档也没有指定结果的时区。我猜应该是当地时间。

还有另一个构造函数:

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

“将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟、秒和协调世界时 (UTC) 或本地时间”。

尝试更换

New DateTime(1970,1,1).Ticks

经过

New DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).Ticks

获取代表 1970-01-01 00:00:00 UTC的 DateTime (如果我没记错语法的话)。

于 2013-08-14T20:34:44.433 回答