Przechowywanie Utc i danych lokalnych w Mongo
Mam implementację Mongo C #, która przechowuje datetime jako 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);
Mam również potrzebę przechowywania lokalnej strefy czasowej użytkownika wraz z UTC. Aby to wyjaśnić, mam dwie właściwości, które się podobają
DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
Chciałbym przechowywać czasy australijskie / amerykańskie / indyjskie / inne w właściwości lokalnej i odpowiednią wartość UTC w drugiej. Ponieważ mam do czynienia z dziesiątkami stref czasowych, mam kod, który konwertuje UTC na pożądaną strefę czasową i zapisuje ją we właściwości WorkItemToCompleteByLocal. Chciałbym, żeby Mongo przechował tę wartość „tak jak jest” i zwróci mi ją. Problem polega na tym, że Mongo zawsze zapisuje go jako ISODate i konwertuje wartość na wersję Utc. Wytłumaczyć. Jeśli UTC to 0730 godzin i obliczam czas Brisbane na 1730 godzin i ustawiam go na WorkitemToCompleteByLocal, zostaną zapisane jako
"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Mongo interpretuje czas podany jako lokalny,serwer w Indiach i pokrywa go do równoważnego UTC wynoszącego 1200 godzin. Podczas gdy odzyskuje wartości z powrotem jako 1730 (IST Albeit), pokonuje mój cel i uniemożliwia mi uruchamianie jakichkolwiek lokalnych zapytań na Mongo. Nie mam pomysłów. Każda pomoc jest mile widziana, aby pomóc przechowywać datę WorkItemToCompleteByLocal „As-Is” bez modyfikacji