Tôi biết về lớp System.TimeZone cũng như sử dụng nhiều phương pháp DateTime.ToString(). Những gì tôi đã không thể tìm thấy là một cách để chuyển đổi một DateTime thành một chuỗi, ngoài các thông tin về thời gian và ngày tháng, có chứa từ viết tắt Time Zone ba chữ cái (trên thực tế, giống như cách tooltips của StackOverflow cho tương đối hiển thị thời gian hoạt động).Cách hiển thị DateTime với một Múi giờ được viết tắt?
Để tạo ví dụ dễ dàng cho mọi người theo dõi cũng như tiêu thụ, hãy tiếp tục với ví dụ về StackOverflow. Nếu bạn nhìn vào chú giải công cụ hiển thị trên thời gian tương đối, nó sẽ hiển thị với ngày đầy đủ, thời gian bao gồm giây trong định dạng mười hai giờ, chỉ định AM/PM và sau đó viết tắt là 3 ký tự của múi giờ (trong trường hợp của họ, được phối hợp Giờ quốc tế). Tôi nhận ra tôi có thể dễ dàng nhận được GMT hoặc UTC bằng cách sử dụng các phương pháp tích hợp, nhưng những gì tôi thực sự muốn là thời gian vì nó là cục bộ — trong trường hợp này, trên một máy chủ web.
Nếu máy chủ web của chúng tôi đang chạy Windows Server 2k3 và đã đặt múi giờ thành CST (hoặc, cho đến khi daylight saving chuyển về, CDT?), Tôi muốn ứng dụng web ASP.NET hiển thị DateTimes liên quan đến múi giờ đó cũng như định dạng để hiển thị "CST" ở cuối. Tôi nhận ra rằng tôi có thể dễ dàng mã hóa điều này, nhưng vì lợi ích của sự mạnh mẽ, tôi thực sự muốn một giải pháp dựa trên máy chủ đang chạy cài đặt môi trường hệ điều hành của mã.
Ngay bây giờ, tôi có tất cả mọi thứ nhưng vùng chữ viết tắt thời gian sử dụng đoạn mã sau:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
nào hiển thị:
10/07/2008 15:40:31
Tất cả Tôi muốn (và nó không nhiều, lời hứa!) Là để nói:
10/07/2008 03:40:31 PM CDT
Tôi có thể sử dụng System.TimeZone.CurrentTimeZone và sử dụng nó để hiển thị chính xác "Daylight Daylight Time" nhưng ... đó là một chút quá dài vì lợi ích ngắn gọn. Tôi sau đó bị mắc kẹt bằng văn bản một thói quen thao tác chuỗi để tước ra không gian trắng và bất kỳ chữ hoa không? Trong khi điều đó có thể hoạt động, điều đó dường như vô cùng khó khăn đối với tôi ...
Googling và không tìm thấy bất kỳ điều gì phù hợp với câu hỏi cụ thể của tôi.
Cách tiếp cận này có một số sai sót. Ví dụ ở Arizona, nơi họ sử dụng Giờ chuẩn miền núi và không quan sát Giờ tiết kiệm ánh sáng ban ngày, .NET có DaylightName và StandardName là "US Mountain Standard Time" sẽ hiển thị "UMST" với phương pháp của bạn. Tôi hy vọng sẽ thấy "MST" thay thế (cả trong mùa hè và mùa đông). Thật không may là khung công tác .NET dường như bị thiếu ở đây nên tôi đã sử dụng một bảng tra cứu tĩnh. – codemonkey
Điều này sẽ không hoạt động trong nhiều múi giờ, ví dụ: ** ACT ** _Acre Time_ (UTC -5) – Tanmay