在使用CosmosDb中涉及DateTimeOffset存在问题。根据Microsoft文档中的指南(链接),需要将本地DateTime转换为UTC时间,则必须将偏移量存储为JSON属性,并让客户端使用该偏移量来计算UTC DateTime值。
我将日期存储在文档中,格式为“2021-04-23T12:15:00+01:00”。这在本地查询和显示用户时非常有效。但是,在对这些DateTimes执行查询时会遇到问题...
在服务器上执行查询如下:
如果expiresAt = "2021-04-23T12:15:00+01:00",
而且现在的UTC时间 = "2021-04-23T11:15:00+00:00",
我希望查询返回一个项目。然而,在一个小时之后才返回任何项目,就好像.UtcDateTime扩展不起作用一样。
如果是这样的话,你如何比较这样的DateTimeOffsets呢?Microsoft文档让人觉得你需要另一个字段来存储偏移量,并且不能直接与datetime本身一起使用。比如...
我将日期存储在文档中,格式为“2021-04-23T12:15:00+01:00”。这在本地查询和显示用户时非常有效。但是,在对这些DateTimes执行查询时会遇到问题...
在服务器上执行查询如下:
.Where(x => x.ExpiresAt.UtcDateTime <= DateTime.UtcNow)
如果expiresAt = "2021-04-23T12:15:00+01:00",
而且现在的UTC时间 = "2021-04-23T11:15:00+00:00",
我希望查询返回一个项目。然而,在一个小时之后才返回任何项目,就好像.UtcDateTime扩展不起作用一样。
如果是这样的话,你如何比较这样的DateTimeOffsets呢?Microsoft文档让人觉得你需要另一个字段来存储偏移量,并且不能直接与datetime本身一起使用。比如...
{
"expiresAt":"2021-04-23T11:15:00",
"expiresAtOffset":"1"
}
我肯定是误解了,对吧?
注意:我尝试使用SQL查询代替linq,代码如下...
"SELECT * FROM c WHERE c.expiresAt <= \"2021-04-23T11:58:05\""
但问题依旧存在,因为问题在于cosmos值需要转换和查看文档中没有将cosmos值转换为UTC时间的方法...