2016-08-26 6 views
1

내가Python에서 datetime 패키지로만 현지화 된 타임 스탬프를 얻는 방법은 무엇입니까?

from datetime import datetime 
datetime.utcfromtimestamp(unix_timestamp) 

문제는 사용하여 UTC로 변환 할 수 있습니다 (예 : 1294778181 등) 초 유닉스 타임 스탬프를 가지고, 나는 'US/Eastern'에서 해당 시간 (모든 DST을 고려)을 좀하고 싶습니다 내가 사용할 수 없습니다 pytz 및 기타 유틸리티

datetime 만 사용할 수 있습니다.

그럴 수 있습니까? 감사합니다.

+3

당신은 더하기/빼기 timedelta – iScrE4m

+1

그래, 그때 당신은 바로 오프셋 오른쪽을 추적해야하기 때문에 그 피하기 위해 자신의 기능을 쓸 수 있을까? –

+1

그래,하지만 다른 방법을 생각할 수 없다 :/당신은 항상 자신의 pytz를 쓸 수있다 : D https://github.com/newvem/pytz/tree/master/pytz – iScrE4m

답변

1

가장 쉬운, 그러나 supersmart 솔루션은

import datetime 
>>> now = datetime.datetime.utcnow() 

미국/동부는 UTC 뒤에 5시간입니다 timedelta를 사용하여, 그래서 다시 읽을 때, 그래서의 단지 timedelta 개체로 thouse 5 시간 만들 수 있도록하고 음수로되어 있지 우리의 코드 우리가 오프셋 것을 알 수 있습니다 -5이며, 우리가 같은 smoething을 통해 날짜를 실행하는 것, 우리가 DST를 해결하고 싶다면 시간대

>>> eastern_offset = -(datetime.timedelta(hours=5)) 
>>> eastern = now + eastern_offset 
>>> now 
datetime.datetime(2016, 8, 26, 20, 7, 12, 375841) 
>>> eastern 
datetime.datetime(2016, 8, 26, 15, 7, 12, 375841) 

을 상쇄 추가 할 때 뺄 때 결정에 마법이 없다는 것을 이 (전적으로 정확하지는 않지만 시간대는 내 전자가 아닙니다.) xpertise (현재 약간의 인터넷 검색이 변경 매년, 우웩) 당신은 시간을 추가, 더욱 자세히 다루지는 ... 내가 갈 매년 않을거야 어떻게 변화하는지 정확히 알아낼 수

if now.month > 2 and now.month < 12: 
    if (now.month == 3 and now.day > 12) or (now.month == 11 and now.day < 5): 
     eastern.offset(datetime.timedelta(hours=5)) 

) 그 모든 통해 :)

+0

위의 내용은 DST를 고려한 것입니까? –

+1

불행히도 그렇지 않습니다. 날짜가 1 년이 아닌 다른 날짜 시간 사이에있을 때 다른 시간 오프셋을 적용하면 문제가 해결 될 수 있습니다. – iScrE4m

+1

@Noobie DST를 수행하는 방법에 대한 광범위한 아이디어를 사용하여 내 대답을 편집했지만 원하는 경우 다소 복잡합니다. 항상 정확해야합니다. 우리가 피츠버그를 가지고있는 이유입니다. – iScrE4m

관련 문제