programing

Python은 적절한 시간대에 현재 시간을 얻습니다.

minimums 2023. 8. 6. 09:55
반응형

Python은 적절한 시간대에 현재 시간을 얻습니다.

지금은 사용합니다.

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

현재 시간을 문자열로 표시합니다.
문제는, 내 컴퓨터가 실행되고 있다는 것입니다.Europe/Berlin시간대 및 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


편집:

정답.

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

이 문제가 발생한 서버는 더 이상 존재하지 않습니다.어쨌든, 다음은 확인할 가치가 있는 몇 가지 다른 사항입니다.

  • 서버/시스템의 표준 시간대가 올바르게 설정되어 있습니까?
    • VM 또는 도커 컨테이너가 호스트와 동기화되지 않을 수 있으므로 확인해 볼 필요가 있습니다.
  • 그 컴퓨터의 시간이 정확합니까?시간대를 변경한 후 +2시간으로 끝나지 않습니까?

로컬 시간대의 현재 시간을 순진한 날짜/시간 객체로 가져오려면:

from datetime import datetime
naive_dt = datetime.now()

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

UTC에서 현재 시간을 순진한 날짜/시간 객체로 가져오려면:

naive_utc_dt = datetime.utcnow()

Python 3.3+에서 현재 시간을 인식하는 날짜/시간 객체로 가져오는 방법:

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 개체에 해당하는 경우에도 작동합니다.

언급URL : https://stackoverflow.com/questions/25837452/python-get-current-time-in-right-timezone

반응형