2013-08-28 31 views
8

Có ít nhất một múi giờ bỏ qua từ 23:59:59 đến 1:00:00 khi "chuyển tiếp về phía trước" cho DST. Có ai biết nó là gì?Một ngày không có nửa đêm

Thông thường sau đây có ngày hôm nay, nhưng không thành công một ngày mỗi năm cho các múi giờ phù hợp với tiêu chí trên.

$ perl -MDateTime -E'say DateTime->today(time_zone => $ARGV[0])->ymd;' \ 
    America/New_York 
2013-08-28 

Tôi cần múi giờ cho mục đích thử nghiệm. Tôi không cố gắng để có được mã trên để làm việc.

+0

(Câu hỏi có thể sử dụng 'perl' và DateTime để giải thích tại sao tôi tìm thông tin này, nhưng câu hỏi là độc lập với cả hai.) – ikegami

+1

Chắc chắn. Nhưng các triển khai khác nhau sẽ làm những việc khác nhau nếu bạn cố gắng làm việc với thời gian không hợp lệ. Một số sẽ lỗi, nhưng một số sẽ làm tròn hoàn toàn. Trong perl, bạn có thể sử dụng múi giờ "nổi" để giải quyết vấn đề này. –

+0

@ Johnson Johnson, tôi đã biết làm thế nào để có được câu trả lời đúng từ DateTime. – ikegami

Trả lời

4

Có một số. Thông thường là Brazil sử dụng múi giờ America/Sao_Paulo.

$ perl -MDateTime -E'say DateTime->new(
    year => 2013, month => 10, day => 20, hour => 12, 
    time_zone => "America/Sao_Paulo")->truncate(to => "day")->ymd;' 
Invalid local time for date in time zone: America/Sao_Paulo 

Bạn có thể khắc phục vấn đề này bằng cách chuyển sang "nổi" vùng tome trước khi ngày:

$ perl -MDateTime -E'say DateTime->new(
    year => 2013, month => 10, day => 20, hour => 12, 
    time_zone => "America/Sao_Paulo") 
    ->set_time_zone("floating") 
    ->truncate(to => "day") 
    ->ymd;' 
2013-10-20 

Xem this documentation.

+1

Ngoài ra, có [Lebanon] (http://www.timeanddate.com/worldclock/clockchange.html?n=34) ('Asia/Beirut') và [Syria] (http://www.timeanddate.com) /worldclock/clockchange.html?n=487) ('Asia/Damascus') –

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