Хранение UTC и местного времени в МонгоC#

Место общения программистов C#
Ответить
Anonymous
 Хранение UTC и местного времени в Монго

Сообщение Anonymous »

У меня есть реализация Mongo C#, которая хранит дату и время в формате UTC.

Код: Выделить всё

MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions options =
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions.UtcInstance;

var serializer =
new MongoDB.Bson.Serialization.Serializers.DateTimeSerializer(options);

MongoDB.Bson.Serialization.BsonSerializer.RegisterSerializer(
typeof(DateTime),
serializer);
Мне также необходимо сохранить локальный часовой пояс пользователя вместе с UTC.
Чтобы объяснить, у меня есть два свойства, которые выглядят следующим образом:

Код: Выделить всё

DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
Я хотел бы сохранить австралийское/американское/индийское/другое время в свойстве Local, а соответствующее значение UTC — в другом. Поскольку я имею дело с десятками часовых поясов, у меня есть код, который преобразует UTC в нужный часовой пояс и сохраняет его в свойстве WorkItemToCompleteByLocal.
Я бы хотел, чтобы Mongo сохранил это значение «как есть» и вернул его мне. Проблема в том, что Mongo всегда сохраняет его как ISODate и преобразует значение в версию Utc.
Чтобы объяснить.
Если UTC равно 07:30 часов, а я вычисляю время Брисбена равным 1730 часам и устанавливаю его в WorkitemToCompleteByLocal,
они сохраняются как

Код: Выделить всё

"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Mongo интерпретирует предоставленное время как местное, поскольку сервер находится в Индии, и преобразует его в эквивалент UTC, равный 1200 часам. Хотя он возвращает значения 1730 (хотя и IST), это противоречит моей цели и не позволяет мне выполнять какие-либо запросы на основе местного времени в Mongo. У меня закончились идеи. Любая помощь приветствуется, чтобы помочь сохранить дату WorkItemToCompleteByLocal «как есть» без изменений

Подробнее здесь: https://stackoverflow.com/questions/169 ... e-in-mongo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»