3

为什么我必须用 来创建我的实体的DateTime属性DateTimeKind.Local

例如,在将其插入表之前,我需要像这样设置以下属性:

someObject.DatePerformed = new DateTime(2012, 11, 19, 3, 3, 3, DateTimeKind.Local);

如果我没有指定DateTimeKind,则保存不正确(增加 2 小时)。这发生在我的本地存储模拟器和我的 Azure 帐户上。我在 GMT +2 小时从本地计算机运行客户端应用程序。

4

2 回答 2

6

这不是 Azure 问题,这就是 DateTime 的工作原理。您需要为对象指定时区DateTime

为避免用户处于不同时区时出现问题,我建议将所有内容存储在 UTC 中,然后在运行时将其解析为本地时间。

否则,您在手动转换时区时会遇到问题。

于 2013-03-05T13:48:03.137 回答
3

Azure 在 UTC 时间运行。如果您使用的是 DateTime.Now,请使用 DateTime.AddHours()。

var utcOffset = 2;
var dateValue = new DateTime(2009, 3, 1, 12, 0, 0);
var localTime = dateValue.AddHours(utcOffset);

或者...

var localValue = DateTime.Now.AddHours(utcOffset);
于 2013-03-05T14:13:06.283 回答