MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak poprawnie zapisać datę?

sterownik c# domyślnie (bez dodatkowych ustawień) zapisuje daty lokalne jako datę utc do bazy danych (data - przesunięcie strefy czasowej), ale odczytuje wstecz bez żadnej akcji (czyli data utc).

Z tego powodu podczas ładowania daty i godziny z bazy danych otrzymujesz diff w ciągu 2 godzin (przesunięcie strefy czasowej). Istnieją dwa podejścia, jak powiedzieć, aby sterownik mongodb c# konwertował daty utc na daty lokalnej strefy czasowej podczas deserializacji:

1.poprzez atrybuty dla konkretnego pola daty:

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}

2.poprzez ustawienia globalne dla wszystkich pól daty i godziny (domyślnie UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

Gdy zrobisz #1 lub #2, zobaczysz lokalną datę.

Aktualizacja:

#2 jest przestarzały w najnowszej wersji sterownika, więc użyj poniższego kodu:

BsonSerializer.RegisterSerializer(typeof(DateTime), 
             new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));

Aktualizacja:

#2 zmienił się ponownie:

BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring data mapowanie pola identyfikatora mongodb

  2. MongoDB - DBRef

  3. mongodb:przechowywanie hierarchicznej struktury drzewa?

  4. Kompilacja sterownika MongoDB C++ na Cygwin

  5. Python i MongoDB:łączenie się z bazami danych NoSQL