Azure表存储错误地插入日期属性

时间:2013-03-05 13:45:06

标签: c# datetime azure azure-storage azure-table-storage

为什么我必须使用DateTime创建实体'DateTimeKind.Local属性?

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

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

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

2 个答案:

答案 0 :(得分:6)

这不是Azure问题,这是DateTime的工作方式。您需要指定对象DateTime的时区。

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

否则,当您手动转换时区时,您正在寻找问题的路径。

答案 1 :(得分:2)

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);