gmtime()
시간 + 날짜를 넣고 초 수를 얻는 위치 를 어떻게 반대로 합니까?
와 같은 문자열 'Jul 9, 2009 @ 20:02:58 UTC'
이 있으며 신기원과 2009 년 7 월 9 일 사이의 시간 (초)을 되찾고 싶습니다.
시도 time.strftime
했지만 올바르게 사용하는 방법 또는 올바른 명령인지 잘 모르겠습니다.
gmtime()
시간 + 날짜를 넣고 초 수를 얻는 위치 를 어떻게 반대로 합니까?
와 같은 문자열 'Jul 9, 2009 @ 20:02:58 UTC'
이 있으며 신기원과 2009 년 7 월 9 일 사이의 시간 (초)을 되찾고 싶습니다.
시도 time.strftime
했지만 올바르게 사용하는 방법 또는 올바른 명령인지 잘 모르겠습니다.
답변:
검색 엔진이 유닉스 타임 스탬프를 얻는 방법이라고 말했기 때문에 여기에 오 셨다면이 답변 읽기를 중단하십시오. 아래로 스크롤하십시오.
당신이 반전하고 싶다면 time.gmtime()
, 당신은 원한다 calendar.timegm()
.
>>> calendar.timegm(time.gmtime())
1293581619.0
을 사용하여 문자열을 time.strptime()
시간 튜플로 바꿀 수 있습니다 calendar.timegm()
.
>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778
캘린더 모듈에 대한 자세한 내용은 여기를 참조하십시오.
시간 모듈을 사용하십시오 .
epoch_time = int(time.time())
time
Unix epoch (1970)를 사용 하면 UTC로 쉽게 변환 할 수 있습니다.
참고 time.gmtime
타임 스탬프 매핑 0
에 1970-1-1 00:00:00
.
In [61]: import time
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.mktime(time.gmtime(0))
로케일에 따라 달라지는 시간 소인이 표시되며 일반적으로 0이 아닐 수 있습니다.
In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0
반대의 time.gmtime
는 calendar.timegm
다음과 같습니다.
In [62]: import calendar
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0
mktime()
와 함께 사용하지 마십시오 gmtime()
. 현지 시간mktime()
은 받아들이지 만 UTC 시간 은 반환 합니다. 현지 시간대는 다를 수 있습니다. "로케일과 관련된 타임 스탬프"는 의미가 없습니다. POSIX 타임 스탬프는 사용자의 로케일 (현지 시간대)에 의존하지 않습니다. 전 세계에서 동일한 값입니다. "에포크 이후 초"는 대부분의 경우 POSIX 타임 스탬프입니다 (Windows에서도). TAI 타임 스케일을 사용하는 "올바른"시간대와 같은 것은 일반적이지 않습니다. Python의 time.time ()이 로컬 또는 UTC 타임 스탬프를 반환합니까?를 참조하십시오 . gmtime()
mktime()
최근에 몇 가지 문제가 있습니다. 일부 파이썬 웹 서버 (예 : 토네이도)의 경우 프로세스가 계속 실행되기 때문에 시스템 로캘을 변경하더라도 mktime()
웹 서버 API 에서 호출하는 것은 여전히 기존 시간대 를 사용하여 시간 객체를 생성합니다. gmtime()
gmt 오프셋으로 전환 하고 수동으로 적용해야합니다.
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()
이것은와 달라야 int(time.time())
하지만 다음과 같은 것을 사용하는 것이 안전합니다x % (60*60*24)
시간 모듈과 달리 날짜 시간 모듈은 윤초를 지원하지 않습니다.
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
from datetime import datetime
또는해야한다datetime.datetime.strptime