TimeZoneInfo
không, có. (Nó là một phần của .NET framework, không phải là một phần của C # - C # chỉ là ngôn ngữ bạn đang sử dụng.) Tuy nhiên, tôi không nghĩ đó là điều bạn thực sự muốn làm.
Tại sao bạn lưu trữ DateTime
trong của máy chủ múi giờ nào? Sẽ hợp lý hơn nếu lưu trữ nó trong UTC, trong hầu hết các trường hợp. Ngoài bất kỳ điều gì khác, nếu máy chủ của bạn nằm trong múi giờ quan sát thời gian tiết kiệm ánh sáng ban ngày, bạn sẽ gặp phải tình trạng mơ hồ trong một giờ mỗi năm, khi đồng hồ quay ngược trở lại. (Cùng một giờ địa phương xảy ra hai lần.)
Khi bạn đã lưu trữ nó dưới dạng UTC, bạn cũng nên cung cấp nó cho ứng dụng khách Javascript của mình dưới dạng UTC. Trong khi bạn nói rằng bạn có "một số tập lệnh java sẽ giúp tôi bù đắp cho người dùng từ UTC" - điều đó sẽ phụ thuộc vào thời điểm chính xác trong thời gian. Ví dụ:vì tôi đang ở Vương quốc Anh, thời gian bù đắp của tôi đôi khi là 0 và đôi khi là +1 giờ. Nếu bạn chuyển UTC trở lại cho khách hàng, điều đó có thể tính theo giờ địa phương từ thời gian UTC đó. Máy chủ của bạn không thể, trừ khi bạn có thể nhận được thông tin chính xác biểu diễn múi giờ từ máy khách đến máy chủ, đây thường là một điều khó thực hiện.
Một lần nữa, bản thân C # không liên quan ở đây. Không rõ ý bạn là phần nào của .NET framework - TimeZone
? TimeZoneInfo
? DateTime
? TimeZoneInfo
có dữ liệu lịch sử, nhưng chỉ khi bạn đang sử dụng phiên bản hệ điều hành hỗ trợ nó.
Chà, theo như khả năng bạn quan tâm. Nó không có nhiều dữ liệu lịch sử như TZDB và nó có một số đại diện rất kỳ quặc cho Nga và Namibia, nhưng nó thường có ý tưởng về các quy tắc thay đổi.