CosmosDB converting DateTime properties to different timezone
我已经为我的实体上的datetime属性计算了UTC(日期时间设置为等于当前UTC时间)。 我把它写入CosmosDB,我在DataExplorer中看到微软改变了日期时间,进行时间转换,将其置于ALMT(哈萨克斯坦阿拉木图)时区。 为什么?
有没有人知道可以关闭以防止这种情况发生的任何设置?
至于TableEntity TimeStamp属性,使用我的datetime属性将其设置为+00:00。
一旦写入CosmosDB,它就会从7月10日09:43到7月11日03:43或ALMT时区一直被更改。
-
请定义"皇家高举"。 相反,请删除这些表达并更准确。 我真的不明白你的顾虑。 你是用UTC写的(建议不管数据库)? 你在当地时区写作吗? 请编辑以使其更清晰,包括相关代码,Cosmos DB中的结果以及预期结果。 注意:在尝试表达挫折而不是确切地定义您的问题时,它没有帮助。
-
我想我必须基本上加密我的日期,因此微软不会触及它们,因为它不知道如何。
-
从本质上讲,微软不应该触及进入CosmosDB的日期时间,因为DateTime没有时区信息:stackoverflow.com/questions/576740/get-timezone-from-datetime由于时间戳有一个0偏移,这更是一个原因 微软不管它。
-
啊,DateTime.Kind里面有一些信息。 我会尝试改变它。
在将它们写入CosmosDB之前对你的DateTime属性执行此操作,或者它将它们从任何本地时区(仍然不确定它是如何确切地/基于它推断的内容)转换为Utc(如果您使用DateTime创建了DateTime)。 UtcNow,然后在CosmosDB转换它之后产生的日期时间将是错误的):
DateTime UTCDateTime = DateTime.SpecifyKind(DateTime.UtcNow,DateTimeKind.Utc);
在您的实体中设置日期时间属性后,不会再进行日期转换。
-
如果您只是创建一个新的日期时间,我相信您日期时间的.Kind属性中的DateTimeKind默认设置为local(DateTimeKind.Local)。 CosmosDB通过添加适当的偏移量来查看并自动将其从本地转换为UTC。
-
在Azure的CosmosDB中保存DateTime值时,这个小技巧似乎对我有所帮助。 我遇到一个奇怪的问题,Azure托管的Web API项目会将Cosmos中的DateTime属性保存为本地时间,然后使用相同数据访问代码的Azure函数将相同的DateTime写入Cosmos作为UTC。 当我改变我的代码以使用DateTime.SpecifyKind()时,我开始一直看到UTC格式。