私の Python ベースの Web サーバーは、クライアントのタイムゾーン (UTC オフセットで表される) を使用して日付操作を実行する必要があります。指定された UTC オフセットをタイムゾーンとして datetime オブジェクトを作成するにはどうすればよいですか?
33910 次
3 に答える
25
使用dateutil
:
>>> import datetime
>>> import dateutil.tz
>>> datetime.datetime(2013, 9, 11, 0, 17, tzinfo=dateutil.tz.tzoffset(None, 9*60*60))
datetime.datetime(2013, 9, 11, 0, 17, tzinfo=tzoffset(None, 32400))
>>> datetime.datetime(2013, 9, 11, 0, 17, tzinfo=dateutil.tz.tzoffset('KST', 9*60*60))
datetime.datetime(2013, 9, 11, 0, 17, tzinfo=tzoffset('KST', 32400))
>>> dateutil.parser.parse('2013/09/11 00:17 +0900')
datetime.datetime(2013, 9, 11, 0, 17, tzinfo=tzoffset(None, 32400))
于 2013-09-10T15:22:39.437 に答える
8
datetime
モジュールのドキュメントにはtzinfo
、固定オフセットを表すクラスの例が含まれています。
ZERO = timedelta(0)
# A class building tzinfo objects for fixed-offset time zones.
# Note that FixedOffset(0, "UTC") is a different way to build a
# UTC tzinfo object.
class FixedOffset(tzinfo):
"""Fixed offset in minutes east from UTC."""
def __init__(self, offset, name):
self.__offset = timedelta(minutes = offset)
self.__name = name
def utcoffset(self, dt):
return self.__offset
def tzname(self, dt):
return self.__name
def dst(self, dt):
return ZERO
Python 3.2 以降、このコードを提供する必要はなくなりました。datetime.timezone
とがモジュールにdatetime.timezone.utc
含まれているため、代わりに使用する必要があります。datetime
于 2013-09-10T15:09:48.250 に答える