복붙노트

[PYTHON] 파이썬은 올바른 시간대에 현재 시간을 얻습니다. [duplicate]

PYTHON

파이썬은 올바른 시간대에 현재 시간을 얻습니다. [duplicate]

지금 나는

import datetime
print(datetime.datetime.now().strftime("%X"))

현재 시간을 문자열로 표시합니다. 문제는 내 컴퓨터가 유럽 / 베를린 표준 시간대로 실행 중이며 UTC에 대한 +2의 오프셋이 여기에 포함되지 않는다는 것입니다. 19시 22 분 26 초 대신 21시 22 분 26 초를 표시해야합니다. 또한 내가 여기에서 찾은 다른 답변 들과는 달리, 나는 그것을 호출하여 저장하지 않는다.

datetime.datetime(2014, 7, 10, 18, 44, 59, 193982, tzinfo=<UTC>)

그러나

datetime.datetime.now()

그래서 나는 다음을 시도했다 (그리고 실패했다).

>>> from pytz import timezone
>>> datetime.datetime.now().astimezone(timezone('Europe/Berlin'))
 ValueError: astimezone() cannot be applied to a naive datetime

이 질문은 마감으로 표시되어 있으므로 답변으로 게시 할 수 없습니다.

이 문제가 발생한 서버가 더 이상 존재하지 않습니다. 어쨌든 다음과 같은 사항을 점검 할 가치가 있습니다.

해결법

  1. ==============================

    1.순진한 datetime 객체로 로컬 시간대에서 현재 시간을 가져 오려면 다음을 수행하십시오.

    순진한 datetime 객체로 로컬 시간대에서 현재 시간을 가져 오려면 다음을 수행하십시오.

    from datetime import datetime
    naive_dt = datetime.now()
    

    예상 시간을 반환하지 않으면 컴퓨터가 잘못 구성되었음을 의미합니다. 먼저 수정해야합니다 (Python과 관련이 없습니다).

    naive datetime 객체로 UTC에서 현재 시간을 가져 오려면 다음을 수행하십시오.

    naive_utc_dt = datetime.utcnow()
    

    현재 시간을 Python 3.3 이상에서 datetime 객체로 인식하려면 :

    from datetime import datetime, timezone
    
    utc_dt = datetime.now(timezone.utc) # UTC time
    dt = utc_dt.astimezone() # local time
    

    tz 데이터베이스에서 주어진 시간대의 현재 시간을 가져 오려면 다음을 수행하십시오.

    import pytz
    
    tz = pytz.timezone('Europe/Berlin')
    berlin_now = datetime.now(tz)
    

    DST 전환 중에 작동합니다. 시간대가 과거에 다른 UTC 오프셋을 가지고있는 경우에 작동합니다. 즉, 시간대가 다른 시간에 여러 tzinfo 객체에 해당하는 경우에도 작동합니다.

  2. from https://stackoverflow.com/questions/25837452/python-get-current-time-in-right-timezone by cc-by-sa and MIT license