繁体   English   中英

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

[英]Azure Table Storage inserting date properties incorrectly

为什么我必须使用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.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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM