BsonDateTimeOptions未设置本地日期时间

问题描述 投票:1回答:1

尽管我用Datetime装饰了BsonDateTimeOptions属性,但仍然无法正常工作,并且时间未插入数据库,比本地时间晚了3个小时。(我认为这是utc)我的基础抽象课

public abstract class MongoBaseModel
{
    public ObjectId Id { get; set; }

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

我的实体

public class RockSongs:MongoBaseModel
{
    [BsonElement("Name")]
    public string Name { get; set; }

    [BsonElement("Singer")]
    public string Singer { get; set; }
}

Db版本v4.2.1

MongoDb.Driver 2.7.2

c# mongodb asp.net-core mongodb-.net-driver
1个回答
0
投票
按照documentation

MongoDB默认将时间存储在UTC中,并将所有本地时间表示形式转换为这种形式。必须运行或报告某些未修改的本地时间值的应用程序可以将时区与UTC时间戳一起存储,并在其应用程序逻辑中计算原始本地时间。

[串行化在DateTimeKind.LocalDateTimeKind.Utc之间没有区别。在两种情况下,您的.NET DateTime都将存储为UTC。该属性有用的时刻是

反序列化。如果您应用DateTimeKind.Local,则MongoDB .NET驱动程序会自动将您的UTC日期时间转换为本地计算机的时区。

© www.soinside.com 2019 - 2024. All rights reserved.