Tôi có một triển khai C# Mongo C lưu trữ datetime là UTC.Lưu trữ Utc và giờ địa phương ở Mongo
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);
Tôi cũng cần lưu trữ múi giờ địa phương của người dùng cùng với UTC. Để giải thích, tôi có hai thuộc tính mà đi như
DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
Tôi muốn để lưu trữ lần Ấn Độ/Khác Úc/Mỹ/trong bất động sản địa phương và giá trị tính theo giờ UTC tương ứng trong một trong những khác. Kể từ khi giao dịch với hàng chục múi giờ, tôi có mã chuyển đổi UTC thành múi giờ mong muốn và lưu nó trong thuộc tính WorkItemToCompleteByLocal. Tôi muốn Mongo lưu trữ giá trị này 'as-is' và trả lại cho tôi. Vấn đề là Mongo luôn lưu trữ nó như là ISODate và chuyển đổi giá trị thành phiên bản Utc. Để giải thích. Nếu UTC là 0730 giờ và tôi tính Brisbane Thời gian để 1730Hours và đặt nó vào WorkitemToCompleteByLocal, họ nhận được lưu lại dưới dạng
"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Mongo giải thích thời gian cung cấp như địa phương, server là ở Ấn Độ và lông nó để UTC tương đương 1200 giờ. Trong khi nó lấy các giá trị trở lại là 1730 (IST Albeit) Nó đánh bại mục đích của tôi và ngăn tôi chạy bất kỳ truy vấn dựa trên thời gian cục bộ nào trên Mongo. Ra khỏi ý tưởng. Bất kỳ trợ giúp nào được đánh giá cao để giúp lưu trữ ngày WorkItemToCompleteByLocal 'As-Is' mà không sửa đổi
Tôi tìm thấy một công việc xung quanh bằng cách lừa hệ thống bằng cách tính lại múi giờ 'Địa phương' thành UTC bằng cách hydrating DateTime mới (Local.Year, Local.Month ......., Kind.Utc) và sau đó sử dụng giá trị đó. Bây giờ, các dữ liệu được lưu trữ như là và logic của tôi biết cột địa phương lưu trữ giá trị địa phương bất kể những gì loại nói (nó nói UTC vì công việc xung quanh thông qua). Tôi sẽ sử dụng điều này cho đến khi tôi tìm thấy một câu trả lời tốt hơn. –
Tôi đã thêm một mục vào JIRA của MongoDB để xử lý thời gian địa phương, cũng đề cập đến mục nhập SO này (cần đăng ký): https://jira.mongodb.org/browse/DOCS-4086 – akauppi
Xem http: //stackoverflow.com/a/38934986/194717 – Tony