Tôi đã lưu lần trong cơ sở dữ liệu sql ở định dạng utc. Tôi đang hiển thị những lần trên một GridView, tuy nhiên họ vẫn là định dạng UTC. Tôi muốn chuyển đổi chúng sang trình duyệt của khách hàng giờ địa phương. Vấn đề là mặc dù tôi có thể nhận được bù đắp múi giờ chỉ dành cho ngày/giờ hiện tại. Mức chênh lệch đó có thể thay đổi nếu một số trong những ngày đó trong tương lai kết thúc xảy ra trong thời gian tiết kiệm ánh sáng ban ngày. Tôi là tương đối mới để lập trình web nhưng có vẻ như những gì tôi cần làm là chạy một số Javascript như mỗi mục liên kết với GridView rằng bằng cách nào đó có đối tượng C# datetimeoffset và chuyển đổi nó vào một thời gian địa phương. Hoặc có lẽ điều đó là không thể?Hiển thị giờ địa phương từ thời gian utc được lưu trữ trong cơ sở dữ liệu sql trên ứng dụng asp.net
Hiển thị giờ địa phương từ thời gian utc được lưu trữ trong cơ sở dữ liệu sql trên ứng dụng asp.net
Trả lời
Điều này có thể được thực hiện ở phía máy chủ nếu bạn có đối tượng TimeZoneInfo
. Bạn có thể sử dụng phương thức tĩnh ConvertTimeFromUtc()
.
Trong C#:
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(myDbDateTime, myTimeZoneInfo);
Nếu bạn không có múi giờ trên máy chủ bên mọi thứ trở nên khó khăn kể từ khi javascript không cung cấp múi giờ của khách hàng (trừ khi họ là ở Mỹ, và thậm chí sau đó chỉ trên một số trình duyệt). Trong trường hợp này, tốt nhất là buộc người dùng phải chọn múi giờ hiện tại của họ và lưu trữ múi giờ đó vào tài khoản của họ. Nếu điều này đang được hiển thị cho người dùng ẩn danh, bạn có thể hiển thị trong UTC theo mặc định và cung cấp tùy chọn để làm mới nó cho múi giờ đã chọn.
Cập nhật
Có một số vấn đề mà xuất hiện khi cố gắng để tự động xác định múi giờ của người dùng.
- Không cung cấp múi giờ cho máy chủ bởi tác nhân người dùng.
- Javascript không cung cấp quyền truy cập vào múi giờ (ngoại trừ một số trình duyệt, đôi khi).
Hàm javascript getTimezoneOffset()
ban đầu có thể là một ý tưởng hay, nhưng vì có nhiều múi giờ có cùng độ lệch, đây không phải là giá trị duy nhất. Sự khác biệt giữa nhiều khu vực không độc đáo này là việc thực hiện thời gian tiết kiệm ánh sáng ban ngày.
Ví dụ: Indiana không coi DST. Vì vậy, trong nửa năm bù đắp của họ phù hợp với thời gian đông, trong khi một nửa khác bù đắp của họ là bằng thời gian trung tâm.
Tuy nhiên, nếu cơ sở người dùng của bạn nằm chủ yếu ở Mỹ và sử dụng trình duyệt IE, Chrome, Safari, Firefox, hơn bạn có thể sử dụng phương pháp toString()
trên một đối tượng Date
để có được những múi giờ. Các trình duyệt này gắn thêm múi giờ vào chuỗi ngày theo các cách khác nhau. Bên ngoài Hoa Kỳ, múi giờ không được bao gồm trong tất cả các trình duyệt (mặc dù một số múi giờ vẫn có thể hiển thị).
mở http://jsbin.com/onulo3 để quan sát:
IE8: Sun 14 tháng 2 22:12:22 EST 2010
Chrome: Sun ngày 14 tháng 2 2010 22:12:22 GMT-0500 (Đông Chuẩn Time)
Safari: Sun 14 Tháng Hai 2010 22:12:22 GMT-0500 (Giờ chuẩn Đông)
Firefox: Sun 14 Tháng Hai 2010 22:12:22 GMT-0500 (Đông tiêu chuẩn T ime)
Với một số phân tích cú pháp, giờ đây bạn có thể xác định múi giờ cho tất cả người dùng người Mỹ của mình. Đối với những người khác, bạn có thể hiển thị thời gian trong UTC (với thông báo về hiệu ứng đó).
Dưới đây là hai cách để chuyển đổi.
Way # 1: Nếu bạn có datetime trong vài giây-từ-kỷ nguyên định dạng, chỉ cần sử dụng một cái gì đó như:
var d=new Date(seconds_since_epoch);
document.write(d.toString());
Way # 2: Nếu bạn chỉ có năm, tháng, ngày, giờ, phút và giây trong thời gian UTC, sử dụng:
var d=new Date(yyyy,mo-1,dd,hh,mi,ss); // in JavaScript, January is month 0
document.write(d.toString());
tôi thấy sau đây trên "Indiana Daylight Savings Time": http://www.timetemperature.com/tzus/indiana_time_zone.shtml
Tính đến bây giờ, 2010/01/18, một thư viện hệ thống của Microsoft gọi TimeZoneInfo.ConvertTimeFromUtc dường như phản ánh hành vi này, đang kiểm tra ..
- 1. Lưu trữ ngày giờ UTC trong cơ sở dữ liệu
- 2. Hiển thị giờ địa phương ở chế độ xem
- 3. Lưu trữ Utc và giờ địa phương ở Mongo
- 4. Lưu trữ ngày và thời gian trong UTC và chuyển đổi giờ địa phương bằng PHP/MySQL
- 5. Hiển thị thời gian theo múi giờ địa phương trong WPF/XAML
- 6. Mysql: Chuyển đổi DB từ giờ địa phương sang UTC
- 7. cách kết xuất người dùng theo giờ địa phương bằng Thời gian UTC (asp.net & ajax)
- 8. Lưu trữ ASP.Net MVC Views trong cơ sở dữ liệu
- 9. ASP.NET MVC 2 Localization/Globalization được lưu trữ trong cơ sở dữ liệu?
- 10. Cơ sở dữ liệu Magento IP được lưu trữ
- 11. Mongoose chuyển đổi ngày UTC được lưu trữ thành giờ địa phương?
- 12. Thời gian Joda DateTime không chính xác lưu trữ trong cơ sở dữ liệu
- 13. Chuyển đổi UTC thành Giờ địa phương trên Android
- 14. Cơ sở dữ liệu địa phương hóa
- 15. Làm thế nào để chuyển đổi thời gian địa phương để UTC thời gian trong Delphi XE2? và làm cách nào để chuyển đổi từ UTC sang giờ địa phương?
- 16. Lưu trữ giá trị C# DateTimeOffset trong cơ sở dữ liệu SQL Server 2005
- 17. Ứng dụng lớp: Lưu trữ tập tin trong dòng phim trong cơ sở dữ liệu
- 18. Hiển thị đa giác trên Google Maps từ kiểu dữ liệu địa lý SQL Server
- 19. Giờ địa phương Chuyển đổi thành giờ UTC Trong Hive
- 20. Cách tính giờ datetime địa phương từ ngày giờ utc trong tsql (sql 2005)?
- 21. PHP & MySQL: Chuyển đổi TIMESTAMP được lưu trữ thành múi giờ địa phương của người dùng
- 22. Hiển thị dữ liệu từ cơ sở dữ liệu SQL trong GridView
- 23. Lưu trữ cơ sở dữ liệu cục bộ cho các ứng dụng WinRT/Metro
- 24. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 25. Giờ clock_gettime là giờ UTC hay múi giờ địa phương?
- 26. sqldf: Thay đổi dấu thời gian từ giờ địa phương sang GMT/UTC
- 27. Hiển thị múi giờ mà không sử dụng UTC
- 28. Thời gian địa phương hóa ASP.Net
- 29. Thay đổi từ cơ sở dữ liệu cục bộ sang SQL Server được lưu trữ trên máy chủ
- 30. Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?
Tôi hy vọng sẽ làm điều đó theo cách mà người dùng không cần chỉ định múi giờ và tôi chỉ có thể nhận múi giờ từ trình duyệt của họ – JonF
Chúng tôi đã dành rất nhiều thời gian để bung một cái gì đó như thế trong một dự án gần đây. Tôi sẽ thêm chi tiết vào câu trả lời của tôi, nhưng phiên bản ngắn là: nó không thể được thực hiện một cách đáng tin cậy. – Joel