2013-08-28 2 views
8

DST의 경우 "앞으로 나아갈 때"로 건너 뛴 23:59:59에서 1:00:00까지의 시간대가 하나 이상 있습니다. 누구는 그것이 무엇인지 압니까?자정이없는 날

다음은 일반적으로 오늘 날짜를 가져 오지만 위의 기준과 일치하는 시간대는 일일 1 일에 실패합니다.

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

테스트 목적으로 시간대가 필요합니다. 위 코드를 작동 시키려고하지 않습니다.

+0

(이 질문은 왜이 정보를 찾고 있는지를 보여주기 위해'perl'과 DateTime을 사용할 수 있습니다. 그러나이 질문은 양쪽 모두 독립적입니다.) – ikegami

+1

물론입니다. 하지만 잘못된 구현 시간을 가지고 작업하려고하면 구현이 달라질 수 있습니다. 일부는 오류가 발생하지만 일부는 암시 적으로 반올림합니다. perl에서는 "부동"시간대를 사용하여이 문제를 해결할 수 있습니다. –

+0

@Matt Johnson, 저는 이미 DateTime에서 정답을 얻는 방법을 알고 있습니다. – ikegami

답변

4

몇 가지가 있습니다. 일반적으로 America/Sao_Paulo 시간대를 사용하는 Brazil입니다.

$ 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 

당신은 날짜를 얻기 전에 "부동"메 영역으로 전환하여 문제를 해결 얻을 수 있습니다 :

$ 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 

this documentation를 참조하십시오.

+1

또한 [레바논] (http://www.timeanddate.com/worldclock/clockchange.html?n=34) ('아시아/베이루트')와 [시리아] (http://www.timeanddate.com /worldclock/clockchange.html?n=487) ('아시아/다마스커스') –