我有一个将日期时间存储为 UTC 的 Mongo C# 实现。
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions options =
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions.UtcInstance;
var serializer =
new MongoDB.Bson.Serialization.Serializers.DateTimeSerializer(options);
MongoDB.Bson.Serialization.BsonSerializer.RegisterSerializer(
typeof(DateTime),
serializer);
我还需要将用户本地时区与 UTC 一起存储。为了解释,我有两个属性,就像
DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
我想将澳大利亚/美国/印度/其他时间存储在 Local 属性中,并将各自的 UTC 值存储在另一个属性中。由于要处理几十个时区,我有将 UTC 转换为所需时区并将其存储在 WorkItemToCompleteByLocal 属性中的代码。我希望 Mongo 将这个值“原样”存储并返回给我。问题是 Mongo 总是将其存储为 ISODate 并将值转换为 Utc 版本。解释。如果 UTC 为 0730 小时,我将布里斯班时间计算为 1730 小时并将其设置为 WorkitemToCompleteByLocal,它们将保存为
"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Mongo 将提供的时间解释为本地时间,服务器位于印度,并将其转换为 1200 小时的等效 UTC。虽然它将值检索为 1730 (IST Albeit),但它违背了我的目的,并阻止我在 Mongo 上运行任何基于本地时间的查询。我没有想法。感谢任何帮助以帮助存储 WorkItemToCompleteByLocal 日期“原样”而不进行修改