파이썬 2.7 및 표준 라이브러리를 실행중인 pfSense 라우터 상자에서 스크립팅을하고 있기 때문에 모듈이 없습니다. pytz 또는 작업 할 dateutil이고, strptime 모듈은 % z를 지원하지 않습니다.Python 2.7에서 표준 라이브러리를 사용하여 날짜/시간/Tz를 Epoch로 변환하는 방법
다른 서버에서 오는 날짜/시간 (현지 시간이 아님)을 유닉스 타임 스탬프로 변환해야합니다.
순진한 구조화 된 시간에 원하는 tz 오프셋을 삽입 한 다음 GMT로 변환 할 수있는 방법이 있습니까?
예를 들어 2016/08/14 02:15:10 [-0600/1] 원격 서버에서 오는 MDT를 고려하십시오. 내 TZ는 EDT -0400입니다. 값이 내 시간대에서라면
, 나는 쉽게 같은 것을 할 수있는 : 나는 나를 시간대 offest을 통과 할 수 있도록 변환을 할 수있는 방법이 필요합니다
>>> t=datetime.datetime(2016,8,14,2,15,10).timetuple()
>>> print t
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=14, tm_hour=2, tm_min=15, tm_sec=10, tm_wday=6, tm_yday=227, tm_isdst=-1)
>>> ts=time.mktime(t)
>>> print ts
1471155310.0
을 (내가 좋아하는 뭔가가 필요 : time.mktime (t, offset = -21600) 물론 존재하지 않습니다.)
나는 값을 쉽게 얻을 수 있기 때문에 모든 것을 하드 코딩했습니다. 도움이 필요한 시간 조작 논리입니다.
strptime %의 z의에서 작동하지 않습니다
은 또한 다음과 같은 방법을 시도했다.
>>> time.strptime("20160814 021510 -0600","%Y%m%d %H%M%S %z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/_strptime.py", line 478, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/local/lib/python2.7/_strptime.py", line 324, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y%m%d %H%M%S %z'
내 표준 시간대가 아니면 % Z가 작동하지 않습니다. 내 시간대 strptime에없는 경우
>>> time.strptime("20160814 021510 MDT","%Y%m%d %H%M%S %Z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/_strptime.py", line 478, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/local/lib/python2.7/_strptime.py", line 332, in _strptime
(data_string, format))
ValueError: time data '20160814 021510 MDT' does not match format '%Y%m%d %H%M%S %Z'
하지만
일 : 숫자 시간대에 대한%z
를 사용
>>> time.strptime("20160814 021510 EDT","%Y%m%d %H%M%S %Z")
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=14, tm_hour=2, tm_min=15, tm_sec=10, tm_wday=6, tm_yday=227, tm_isdst=1)
제발 좀 더 명확히하십시오. 보유하고있는 정보는 무엇이며 원하는 결과는 무엇입니까? 예를 들다. 당신이 시도한 것에 대한 몇 가지 코드를 보여주십시오. –
또한 "신기원"은 "기간의 시작"을 의미하는 영어 단어입니다. 여기에서의 사용은 일반적인 실수입니다. 아마도 Unix Epoch (1970-01-01T00 : 00 : 00Z)를 기본으로 사용하는 "Unix Timestamp"를 의미 할 것입니다. "epoch timestamp"라는 용어는 신기원 인 유일한 타임 스탬프가 '0'이기 때문에 무의미합니다. –