从C#插入后从mongodb中检索不同的时间戳

时间:2016-04-30 14:08:40

标签: c# mongodb timestamp

我正在使用MongoDB,并发现了奇怪的行为(至少对我而言)。从C#插入并从MongoDB中检索时,我有时间差异。

我的实体:

[BsonId]
public ObjectId Id { get; set; }
public bool IsActive { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedTime { get; set; }
public string Name { get; set; }

使用以下代码插入时间戳:

public bool Insert(AccountCategories _input)
{
    _input = new AccountCategories();
    _input.CreatedBy = "super-admin";
    _input.CreatedTime = DateTime.Now;
    _input.Id = new ObjectId();
    _input.IsActive = true;
    _input.Name = "test-name";

    var _result = _repo.Insert(_input);

    return _result;
}
  • 插入数据:{4/30/16 9:04:36 PM}
  • 检索数据:{4/30/16 2:04:36 PM}

我尝试通过添加Bson属性来修改实体,但它无法正常工作:

[BsonRepresentation(BsonType.Document)]
public DateTime CreatedTime { get; set; }

为什么会出现这种情况?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我在搜索此网站和谷歌时更改了我的关键字后找到了答案。

根据MongoDB手册: https://docs.mongodb.org/manual/tutorial/model-time-data/

时间默认为UTC,这就是为什么我有7个小时的差异(我不好先不看手册) 所以我设法通过将BsonAttribute添加到Datetime来解决我的问题,如下所示:

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

来源:Dealing with how MongoDB stores DateTime when used with Service Locator Pattern