gpt4 book ai didi

c# - 为什么 Azure 表存储不支持 DateTimeOffset?

转载 作者:行者123 更新时间:2023-11-30 16:08:47 27 4
gpt4 key购买 nike

在任何人将其作为重复项关闭之前,我知道 Azure 表存储本身不支持 DateTimeOffset 类型( MSDN states as much ;尝试读取和写入具有 DateTimeOffset< 的实体 属性不会引发异常,但也不会维护正确的时间戳)。

我的问题是为什么支持这种数据类型,特别是因为它在创建 Azure 时就已经存在了。更令人困惑的是,Azure 表存储的 .NET API 似乎提供了对数据类型的支持:实体被转换为 EntityProperty 值的字典,并且 EntityProperty类同时具有 DateTimeOffsetValue 属性和采用该类型值的构造函数。如果 Azure 方面无论如何都不支持该类型,他们会在 API 中添加此支持,这似乎很奇怪。

最佳答案

实际上是支持的,发生的事情是服务器端将本地 DateTimeOffset 转换为标准 UTC。

例如发送的实体有 –

sendEnt.DateTimeOffset
{2/25/2015 6:55:46 PM -08:00}
Date: {2/25/2015 12:00:00 AM}
DateTime: {2/25/2015 6:55:46 PM}
Day: 25
DayOfWeek: Wednesday
DayOfYear: 56
Hour: 18
LocalDateTime: {2/25/2015 6:55:46 PM}
Millisecond: 229
Minute: 55
Month: 2
Offset: {-08:00:00}
Second: 46
Ticks: 635604873462293981
TimeOfDay: {18:55:46.2293981}
UtcDateTime: {2/26/2015 2:55:46 AM}
UtcTicks: 635605161462293981

然后返回的实体有 –

retrievedEntity.DateTimeOffset
{2/26/2015 2:55:46 AM +00:00}
Date: {2/26/2015 12:00:00 AM}
DateTime: {2/26/2015 2:55:46 AM}
Day: 26
DayOfWeek: Thursday
DayOfYear: 57
Hour: 2
LocalDateTime: {2/25/2015 6:55:46 PM}
Millisecond: 229
Minute: 55
Month: 2
Offset: {00:00:00}
Second: 46
Ticks: 635605161462293981
TimeOfDay: {02:55:46.2293981}
UtcDateTime: {2/26/2015 2:55:46 AM}
UtcTicks: 635605161462293981
Year: 2015

服务器将返回 UTC DateTimeOffset,因为无法确定最终用户在发送时是否使用本地时间或 UTC 时间创建了 DateTimeOffset。

关于c# - 为什么 Azure 表存储不支持 DateTimeOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28675770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com