MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да запазите правилно датата?

c# драйвер по подразбиране (без допълнителни настройки), запазващ местните дати като utc дата в базата данни (дата - отместване на часовата зона), но чете обратно без никакви действия (така, utc дата).

Поради това, когато зареждате дата и час от базата данни, получавате разлика в 2 часа (отместването на вашата часова зона). Има два подхода как да кажете на драйвера на mongodb c# да преобразува utc дати в дати от местната часова зона по време на десериализация:

1. чрез атрибутите за конкретно поле за дата:

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

2. чрез глобални настройки за всички полета за дата и час (по подразбиране е UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

След като направите #1 или #2, ще видите местна дата.

Актуализация:

#2 е остарял в последната версия на драйвера, така че вместо това използвайте кода по-долу:

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

Актуализация:

#2 се промени отново:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoDB с Java 8 LocalDate MappingException

  2. Mongodb, $sum с условие

  3. Как изпълнявате find(id:{$in:[list]}) с помощта на vertx-mongo клиент

  4. Създадени от MongoDB файлове

  5. Търсене на вложени документи в MongoDB