python
(또는 pytz
)에 현재 컴퓨터에 설정된 표준 시간대에 해당하는 tzinfo
개체를 반환하는 교차 플랫폼 기능이 있습니까? 그들이현재 시간대에 해당하는 tz_info 객체를 얻는 방법은 무엇입니까?
답변
>>> import datetime
>>> today = datetime.datetime.now()
>>> insummer = datetime.datetime(2009,8,15,10,0,0)
>>> from pytz import reference
>>> localtime = reference.LocalTimezone()
>>> localtime.tzname(today)
'PST'
>>> localtime.tzname(insummer)
'PDT'
>>>
time.timezone
수익률은 현재 시간대 오프셋 크로스 플랫폼 아니기 때문에
환경 변수에 계산 될 수 없다. 더 복잡한 구조가 필요하다면 datetime.tzinfo
도 있습니다.
time.timezone()은 UTC에서 오프셋을 반환합니다. 나는 tzinfo 객체를 원한다. 그래서 나는 아마도 다음과 같은 함수가 될 것이다. 1. tzinfo 객체에 해당하는 클래스를 정의한다. 2. 객체를 인스턴스화한다. 3. 리턴 값 –
'datetime' docs는'tzinfo'의 사용법을 설명하는 예제를 가지고있다. – SilentGhost
'datetime.datetime.now() + datetime.timedelta (seconds = time.timezone)'트릭을 멋지게 처리했습니다. – Baczek
본인은 직접 사용하지 않았지만 dateutil.tz.tzlocal()이 트릭을 수행해야합니다.
http://labix.org/python-dateutil#head-50221b5226c3ccb97daa06ea7d9abf0533ec0310
''Europe/Moscow ''시간대는 2011 년 이전에 다른 utc 오프셋을 가졌습니다 ('dateutil'은 실패하지만'pytz'는 그러한 시간대에 작동합니다). – jfs
아마 시도 :
import time
print time.tzname
#OR pytz
시간대를 반환 time.tzname[time.daylight]
첫 번째 답변 인 이유 -1과 비교해보십시오. –
['time.daylight']는 현재 시간대에 DST가 있는지 여부를 나타냅니다. 현재 DST가 적용되는지 여부를 나타내지는 않습니다. 또한'time.tzname'은'tzinfo' 인스턴스가 아닙니다 (문자열입니다). 올바른 tzname을 얻을지라도 [시스템 시간대 설정을 얻고 pytz.timezone에 전달하는 방법] (http://stackoverflow.com/q/13218506/4279)을 참조하십시오. 현지 시간대를 찾을 수있는 것은 아닙니다. 현재 utc 오프셋을 얻기위한 몇 가지 접근법을 보여주는 [Python에서 컴퓨터의 utc 오프셋 가져 오기] (http://stackoverflow.com/a/3168394/4279)를 참조하십시오. – jfs
tzlocal
module이 * nix에서 스크립트 및 Win32에서 작동 :
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
# get local timezone
local_tz = get_localzone()
print local_tz.localize(datetime(2012, 1, 15))
# -> 2012-01-15 00:00:00+04:00 # current utc offset
print local_tz.localize(datetime(2000, 1, 15))
# -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04)
print local_tz.localize(datetime(2000, 6, 15))
# -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST
참고 : DST 및 비 DST utc 오프셋 변경 사항을 고려합니다.
내가 나 자신에게 같은 질문했다, 나는 [1]에서 답을 찾을 :
섹션 8.1.7를 살펴 보자 형식 "%의 Z를"(소문자의 Z 대문자 반환도 표준 시간대이지만 4 자리 형식은 아니지만 [3]에서와 같이 시간대 약어 형식으로) strftime의 형식은 전자 메일 헤더에 표준 인 "+/- 4DIGIT"형식을 반환합니다 (RFC 2822의 3.3 절 참조). , 이메일 헤더의 시간대를 지정하는 다른 방법을 폐지하는 [2] 참조). 이 형식에서 시간대를 원하는 경우
그래서, 사용
time.strftime("%z")
[1] http://docs.python.org/2/library/datetime.html
[2] http://tools.ietf.org/html/rfc2822#section-3.3
[3] 시간대 약어 : http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations를에만 참고.
'tzinfo' 객체를 제공하지 않습니다. 현지 시간대에 대한 현재 utc 오프셋을 초 수로 얻을 수 있습니다 :'-altzone daylight and localtime() .tm_isdst> 0 else -timezone' (모든 이름은'time' 모듈에 있습니다). – jfs
다음 코드 조각은 서버에 구성된 표준 시간대와 관계없이 다른 시간대의 시간을 반환합니다.
# pip install pytz tzlocal
from tzlocal import get_localzone
from datetime import datetime
from pytz import timezone
local_tz = get_localzone()
local_datetime = datetime.now(local_tz)
zurich_tz = timezone('Europe/Zurich')
zurich_datetime = zurich_tz.normalize(local_datetime.astimezone(zurich_tz))
여기에 'zurich_datetime = datetime.now (timezone ('Europe/Zurich '))'를 사용하지 않는 이유가 무엇입니까? btw, [.astimezone()'] (https://answers.launchpad.net/pytz/+question/249229#6) 다음에'.normalize()'를 호출 할 필요는 없습니다. – jfs
- 1. 현재 객체를 반환하는 방법은 무엇입니까?
- 2. 현재 ProcessID를 얻는 방법은 무엇입니까?
- 3. Jquery에서 실제 객체를 얻는 방법은 무엇입니까?
- 4. 모든 레일스 작업에서 객체를 얻는 방법은 무엇입니까?
- 5. 현재 요청의 도메인을 얻는 방법은 무엇입니까?
- 6. 브라우저가 현재 방문하고있는 URL을 얻는 방법은 무엇입니까?
- 7. jCarousel Lite로 현재 색인을 얻는 방법은 무엇입니까?
- 8. SQL에서 현재 datetime을 얻는 방법은 무엇입니까?
- 9. rspec의 현재 컨텍스트 이름을 얻는 방법은 무엇입니까?
- 10. fbjs에서 현재 URL을 얻는 방법은 무엇입니까?
- 11. 현재 실행중인 실제 캡션을 얻는 방법은 무엇입니까?
- 12. moviePlayer에서 현재 재생 시간을 얻는 방법은 무엇입니까?
- 13. 현재 플랫폼을 설명하는 문자열을 얻는 방법은 무엇입니까?
- 14. 현재 레이아웃의 이름을 얻는 방법은 무엇입니까?
- 15. 현재 사용자 에이전트를 얻는 방법은 무엇입니까?
- 16. DB2에서 현재 분리 레벨을 얻는 방법은 무엇입니까?
- 17. 브라우저에서 현재 열려있는 페이지를 얻는 방법은 무엇입니까?
- 18. 현재 GPS 시간을 얻는 방법은 무엇입니까?
- 19. SharePoint에서 현재 URL을 얻는 방법은 무엇입니까?
- 20. 플라스크에서 현재 포트 번호를 얻는 방법은 무엇입니까?
- 21. HtmlHelper에서 현재 경로를 얻는 방법은 무엇입니까?
- 22. 현재 재생중인 동영상 파일의 현재 프레임을 얻는 방법은 무엇입니까?
- 23. 현재 스레드의 ProcessThread.TotalProcessorTime을 얻는 방법은
- 24. asp.net에서 로그인 한 사용자의 Netcredentials 객체를 얻는 방법은 무엇입니까?
- 25. 한 페이지에서 다른 페이지로 이동하는 동안 현재 표시된 페이지 객체를 얻는 방법은 무엇입니까?
- 26. Symfony 양식에서 요청 객체를 얻는 가장 좋은 방법은 무엇입니까?
- 27. 특정 연도의 주 수를 얻는 방법은 무엇입니까? 또한 zend를 사용하여 현재 연도를 얻는 방법은 무엇입니까?
- 28. 현재 시간대에 대한 최대 절전 모드 쿼리에 날짜 매개 변수를 할당하는 방법은 무엇입니까?
- 29. Linux에서 printf_l에 해당하는 방법은 무엇입니까?
- 30. OMNet ++ 4에서 동적으로 생성 된 모듈의 객체를 얻는 방법은 무엇입니까?
['pytz' docs 그 'pytz.reference'] (http://pytz.sourceforge.net/#problems-with-localtime)는 테스트에만 사용되어야합니다 *. – jfs
이 경고는 미국 DST에 2007 이전 규칙을 사용하는'reference.USTimeZone'에 적용됩니다. 그러나 여기에서 사용되는'reference.LocalTimezone'은'time.localtime'의 동작을 검사합니다.'time.localtime'은 시스템 라이브러리에서 정확성이 유지됩니다. 'reference.LocalTimezone'은 미국 규칙의 2007 년 변경 전후의 올바른 DST 전환을 제공합니다. 나는 다른 나라들을 위해 시험하지 않았다. – rob
@rob : ** 잘못된 **. 'LocalTimezone()'을 사용하지 마십시오. 'pytz'는 * 역사적인 시간대 데이터를 제공하지만'time.timezone','time.altzone' ('LocalTimezone()'에 의해 사용됨)은 상수입니다. 즉, 가장 최근의 * 시간대 정의를 반영합니다. 과거/미래에 현지 시간대가 다른 utc 오프셋을 가질 수 있습니다. 예를 들어 2010-2015 년 유럽/모스크바 시간대를 사용해보고 어떻게되는지 직접 확인하십시오. – jfs