2017-02-21 3 views
0

logstash에 몇 가지 서버 메트릭을 내보내는 python 스크립트를 작성하려고합니다. 일광 절약 시간제를 사용할 수있는 다른 시간대에서 작동하도록 할 수 없습니다. 이 코드는 DST 사용 여부와 상관없이 동일한 시간을 계속 반환합니다. 내 현재 코드는 이것이다 :서버의 현재 시간대에 DST가 활성화되어 있는지 확인하십시오.

def get_formatted_tz(): 
    tz = str.format('{0:05.2f}', float(time.timezone)/3600 - time.daylight).replace('.', ':') 
    return '-' + tz if time.timezone > 0 else '+' + tz 

나는이 같은 함수를 호출 오전 :

formatted = time.strftime('%Y-%m-%dT%H:%M:%S') 
tz = self.get_formatted_tz() 
isodate = formatted + tz 

가 어떻게이 문제를 개선 할 수 있습니까? 어떤 도움이라도 대단히 감사합니다.

+0

은 ... 당신은에 float를 변환하고 '.'를':'로 바꾸면됩니다. 그것은 당신이 원하는 것을하지 않을 것입니다. 실제로 요구되는 문제에 관해서는 원하지 않는 동작을 설명하기위한 예제를 제공해주십시오. – glibdud

+0

@glibdud 저는 파이썬에 관해서 초보자입니다. ISO8601 형식으로 시간을 보내야합니다. 시간 라이브러리만으로는이 작업을 수행 할 수 없었으므로이 hackish 변환을 수행하게되었습니다. 예 : 내 서버가 현재 BRST (UTC-2/브라질 절약 시간)이지만 내 보낸 시간은 항상 BRT (UTC-3/브라질 시간)입니다. –

답변

0

조금 더 주위를 검색하고 대답을 찾았습니다. 나는 시간 라이브러리만을 사용하고 있었고, 이제는 datetime을 사용하고 있습니다.

ISO-8601에 지역 :

import datetime 
datetime.datetime.now().isoformat() 

UTC ISO-8601에 : 나는 당신의 질문에 무관 한 문제를 발견했습니다

import datetime 
datetime.datetime.utcnow().isoformat() 
관련 문제