Bất cứ ai có thể giải thích sự khác biệt giữa System.DateTime và System.DateTimeOffset trong C# .NET? Cách nào phù hợp nhất để xây dựng ứng dụng web với người dùng từ các múi giờ khác nhau?Sự khác biệt giữa System.DateTime và System.DateTimeOffset
Trả lời
Giá trị ngày giờ xác định ngày và giờ cụ thể, nó bao gồm thuộc tính Kind cung cấp thông tin giới hạn về múi giờ mà ngày và thời gian đó thuộc về.
Cấu trúc DateTimeOffset đại diện cho giá trị ngày và thời gian, cùng với giá trị bù trừ cho biết giá trị đó khác với UTC bao nhiêu. Do đó, giá trị luôn luôn xác định rõ ràng một điểm duy nhất trong thời gian.
DateTimeOffset nên được coi là ngày và thời gian mặc định để phát triển ứng dụng vì việc sử dụng các giá trị DateTimeOffset phổ biến hơn nhiều so với giá trị DateTime.
Xem thêm thông tin, mã ví dụ tại địa chỉ: http://msdn.microsoft.com/en-us/library/bb384267.aspx
http://msdn.microsoft.com/en-us/library/system.datetime .kind.aspx –
Có một vài điểm ở đây:
thông tin DateTime nên được lưu trữ ở định dạng UTC trong cơ sở dữ liệu của bạn:
http://www.4guysfromrolla.com/articles/081507-1.aspx
Khi bạn sử dụng thông tin DateTime trong Ứng dụng web của mình, bạn sẽ cần chuyển đổi nó thành LocalTime:
DateTime.UtcNow.ToLocalTime();
sẽ chuyển đổi thành giờ địa phương từ góc nhìn của Máy chủ web.
Nếu bạn có một WebServer tại một địa điểm, phục vụ khách hàng ở nhiều quốc gia, sau đó bạn sẽ cần phải thực hiện thao tác này trong javascript trên Client bản thân:
myUTCDate.toLocaleTimeString();
http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm
DateTimeOffset đại diện cho datetime dưới dạng giờ UTC.
Vì vậy
DateTimeOffset dtoNow = DateTimeOffset.Now;
là giống như
DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow;
Đây dtoNow sẽ bằng dtoUTCNow mặc dù ai bị khởi tạo DateTimeOffset.Now và người kia được khởi tạo để DateTimeOffset.UTCNow;
Vì vậy, DatetimeOffset rất tốt để lưu trữ sự khác biệt hoặc Offset w.r.t UTC.
Để biết thêm chi tiết, tham khảo MSDN.
- 1. Sự khác biệt giữa $ (...) và `...`
- 2. Sự khác biệt giữa. và #
- 3. Sự khác biệt giữa $ * và $ @
- 4. Sự khác biệt giữa ". +" Và ". +?"
- 5. Sự khác biệt giữa "**/* /" và "** /"?
- 6. Sự khác biệt giữa = và: =
- 7. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 8. Sự khác biệt giữa Html.RenderAction và Html.Action
- 9. Sự khác biệt giữa cookie và phiên?
- 10. Sự khác biệt giữa '.' và "." trong java
- 11. Sự khác biệt giữa SimpleDB và S3
- 12. C++ - Sự khác biệt giữa (*). và ->?
- 13. Sự khác biệt giữa offsetHeight và clientHeight
- 14. Sự khác biệt giữa RDLC và SSRS
- 15. Sự khác biệt giữa "\ n" và Environment.NewLine
- 16. Sự khác biệt giữa qt và PyQt4
- 17. Sự khác biệt giữa AForge và OpenCV
- 18. Sự khác biệt giữa toFixed() và toPrecision()?
- 19. sự khác biệt giữa cacao và cocoatouch
- 20. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 21. Sự khác biệt giữa window.location.host và window.location.hostname
- 22. Sự khác biệt giữa DTLS và TLS
- 23. Sự khác biệt giữa Mealy và Moore
- 24. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 25. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 26. sự khác biệt giữa orm và pdo
- 27. Sự khác biệt giữa nproc và ulimit?
- 28. Sự khác biệt giữa apc_add và apc_store?
- 29. Sự khác biệt giữa mb_substr và substr
- 30. Sự khác biệt giữa p4diff và p4diff2
trùng lặp của http://stackoverflow.com/questions/264617/when-would-you-prefer-datetime-over-datetimeoffset – V4Vendetta