PythonでUTCからJSTに変換する方法
TracのXML-RPCで取得した時刻がUTCなので、これをJSTに変換する方法を見つけたので、メモ。
ソース
>>> import xml_rpc >>> server = xml_rpc.XmlRpcServer('http://admin:admin@localhost/trac/TracTest/lo gin/xmlrpc') >>> ticket_1 = server.ticket.get(1) >>> print ticket_1 [1, <DateTime '20100321T18:20:48' at f74d50>, <DateTime '20100321T18:20:48' at f 74d78>, {'status': 'new', 'description': 'bvabafda', 'reporter': 'sinsoku', 'cc' : '', 'component': u'\u305d\u306e\u4ed6', 'owner': 'somebody', 'summary': 'aaaaa aaaa', 'priority': u'\u666e\u901a', 'keywords': '', 'version': '', 'milestone': '', 'due_assign': '', 'type': u'\u30bf\u30b9\u30af', 'due_close': '', 'complete' : ''}] >>> import time >>> utc_date = time.strptime(ticket_1[2].value,'%Y%m%dT%H:%M:%S') >>> print utc_date (2010, 3, 21, 18, 20, 48, 6, 80, -1) >>> import calendar >>> jst_date = time.localtime(calendar.timegm(utc_date)) >>> print jst_date (2010, 3, 22, 3, 20, 48, 0, 81, 0)
インタラクティブシェルでやった内容をそのままコピペw
重要なのはこの辺ですね。
>>> print utc_date (2010, 3, 21, 18, 20, 48, 6, 80, -1) >>> import calendar >>> jst_date = time.localtime(calendar.timegm(utc_date)) >>> print jst_date (2010, 3, 22, 3, 20, 48, 0, 81, 0)
シーケンスをエポック秒に直して、それをJSTに変換しています。
関数の簡単な説明は下記参照。
calendar.timegm(t(シーケンス))
timeモジュールで利用するシーケンスに相当するエポック秒からの経過時間を取得する。