BsonDateTimeOptions 不设置本地日期时间

erh*_*355 5 c# mongodb mongodb-.net-driver asp.net-core

虽然我用 装饰了我的Datetime财产BsonDateTimeOptions,但它仍然不起作用,时间插入到数据库中,比我的当地时间晚 3 小时。(我认为是 utc)
我的基础抽象类

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

    [BsonElement]
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime InsertedAt{ get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

我的实体

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

    [BsonElement("Singer")]
    public string Singer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

数据库版本 v4.2.1

MongoDb.Driver 2.7.2

mic*_*ckl 5

根据文档

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

DateTimeKind.LocalDateTimeKind.Utc当涉及序列化时没有区别。在这两种情况下,您的 .NETDateTime都将存储为 UTC。这个属性变得有用的时刻就是反序列化。如果您申请,MongoDB .NET 驱动程序将自动将您的 UTC 日期时间转换为您本地计算机的时区DateTimeKind.Local

MongoDB 将日期存储为 UTC 的事实直接来自BSON规范。