How to save date properly?

后端 未结 6 1045
耶瑟儿~
耶瑟儿~ 2020-12-08 20:34

I\'m trying to save date (using C# official driver):

val = DateTime.Parse(value).Date; //Here date is {11/11/2011 12:00:00 AM}
var update = Update.Set(\"Date         


        
6条回答
  •  北海茫月
    2020-12-08 20:59

    c# driver by default (without extra settings) saving local dates as utc date into database (date - time zone offset) but reading back without any action (so, utc date).

    Because of this when you loading datetime from database you receive diff in 2 hours (your timezone offset). There are two approaches how to say to mongodb c# driver convert utc dates to local timezone dates during deserialization:

    1.through the attributes for particular date field:

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

    2.through global settings for all datetime fields (default is UtcInstance):

    DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
    

    Once you will do #1 or #2 you will see local date.

    Update:


    #2 is obsolete in latest driver version so use code below instead:

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

    Update:


    #2 has changed again:

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

提交回复
热议问题