为什么 MongoDB ObjectId 创建时间与用于创建它的日期时间不同

why is MongoDB ObjectId creationtime is different from the datetime used for its creation

我正在为 mongodb 使用 C# 1.11 驱动程序。我注意到当我使用日期创建 objectId 时,当我使用 CreationTime 属性 获取日期时间时,它是不同的。

谁能解释为什么会这样?

使用日期 10/14/2016 12:00:00 上午

var date = DateTime.ParseExact("20161014000000","yyyyMMddHHmmss", CultureInfo.InvariantCulture);

正在创建 ObjectId

ObjectId oid = new ObjectId(date, 0 , 0 , 0);
oid.CreationTime // returns 10/14/2016 7:00:00 AM

可能是因为 mongo 将其默认 (mongo's docs) 修改为 UTC: "MongoDB 默认以 UTC 格式存储时间,并将转换为任何本地时间 表示成这种形式。必须运行或报告某些应用程序 未修改的本地时间值可以将时区与 UTC 时间戳一起存储, 并在他们的应用程序逻辑中计算原始本地时间。"