Почему хранилище таблиц Azure не поддерживает DateTimeOffset?
Прежде чем кто-либо закроет это как дубликат, я знаю, что хранилище таблиц Azure не поддерживает DateTimeOffset
введите нативно ( MSDN заявляет столько же; пытается читать и писать объекты, имеющие DateTimeOffset
свойства не выдают исключение, но также не поддерживают правильные метки времени).
У меня вопрос, почему этот тип данных не поддерживается, особенно если он уже существовал при создании Azure. Еще более запутанным является то, что.NET API для хранения таблиц Azure, кажется, предлагает поддержку для типа данных: сущности преобразуются в словарь EntityProperty
ценности, а EntityProperty
класс имеет как DateTimeOffsetValue
свойство и конструктор, который принимает значение этого типа. Кажется странным, что они добавили бы эту поддержку в API, если сторона Azure все равно не поддерживает тип.
1 ответ
На самом деле поддерживается то, что произошло, когда серверная сторона преобразует локальный 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, поскольку нет способа выяснить, создал ли конечный пользователь DateTimeOffset, используя локальное время или время UTC при отправке.