2015-08-19 15 views
6

SO Tôi mới dùng NodaTime và cố gắng sử dụng nó để lưu trữ thông tin múi giờ bằng cách sử dụng đối tượng DateTimeZone.Làm cách nào để lấy danh sách các chuỗi trong tzdb được sử dụng làm bộ khởi tạo múi giờ?

Tôi đã xem qua mẫu bên dưới trong hướng dẫn sử dụng, v.v. cho tôi đối tượng DateTimeZone tốt đẹp từ tzdb, điều tuyệt vời.

var london = DateTimeZoneProviders.Tzdb["Europe/London"]; 

Câu hỏi của tôi là - làm cách nào để có danh sách các chuỗi múi giờ ("Châu Âu/Luân Đôn") được sử dụng trong tzdb. Tôi nhìn quanh, không nơi nào để tìm. Có một danh sách tiêu chuẩn nào đó mà tôi có thể tham khảo không? Cái này hoạt động ra sao? ví dụ - chuỗi tôi nên chuyển cho EST là gì?

Cảm ơn!

Trả lời

13

Để tìm nạp các ID múi giờ theo lập trình, hãy sử dụng thuộc tính Ids trong IDateTimeZoneProvider. Ví dụ: để tìm tất cả các vùng:

var provider = DateTimeZoneProviders.Tzdb; 
foreach (var id in provider.Ids) 
{ 
    var zone = provider[id]; 
    // Use the zone 
} 

Đối với giờ miền Đông, bạn có thể muốn America/New_York.

Nói chung, các số nhận dạng này là số nhận dạng từ IANA - và chúng là những cái được sử dụng trong hầu hết các hệ thống không phải của Windows.

+0

Và bản thân danh sách có thể được tải xuống từ https://www.iana.org/time-zones? –

+0

@EndyTjahjono: Đó là dữ liệu múi giờ thô. Tôi không biết cách nào đơn giản để có được tất cả các ID từ đó mà không có nhiều dữ liệu khác. –

Các vấn đề liên quan