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



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

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

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

如果我不指定DateTimeKind,那么它被错误地保存(添加2小时)。这在我的本地存储模拟器和Azure帐户上都会发生。我在GMT +2小时从本地机器运行客户端应用程序。

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

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

否则,在手动转换时区时,您将面临一系列问题。

Azure在UTC时间运行。如果您使用的是DateTime。现在,使用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);

相关内容

  • 没有找到相关文章

最新更新