c#-为什么Azure表存储不支持DateTimeOffset?
作者:互联网
在任何人将其作为副本关闭之前,我知道Azure表存储本身不支持DateTimeOffset类型(MSDN states as much;尝试读写具有DateTimeOffset属性的实体不会引发异常,但不会维护正确的时间戳记要么).
我的问题是为什么不支持此数据类型,尤其是当创建Azure时就已经存在.更令人困惑的是,用于Azure Table Storage的.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.
标签:datetimeoffset,azure,azure-storage,c 来源: https://codeday.me/bug/20191120/2045904.html