0

私はDjangoとdatetimeに苦労しています。

この「Sun, 28 Aug 2016 11:42:00 +0200」のような日時文字列があります-タイムゾーン情報を含む私の観点からは「+0200」

次に、これを使用して変換します。

date_published = time.strptime(date_published, "%a, %d %b %Y %H:%M:%S %z")

それは私にこれを与えます:

time.struct_time(tm_year=2016, tm_mon=8, tm_mday=28, tm_hour=11, tm_min=42, tm_sec=0, tm_wday=6, tm_yday=241, tm_isdst=-1)

次に、次のように変換しようとします。

date_published = datetime.fromtimestamp(time.mktime(date_published))

それは私に与えます:

2016-08-28 11:42:00

そして、Django は保存時に次の警告で文句を言います:

RuntimeWarning: DateTimeField ModelName.field_name received a naive
datetime (2012-01-01 00:00:00) while time zone support is active.

タイムゾーン対応の日時モデルのフィールドに保存できるように、入力文字列を正しく変換するにはどうすればよいですか?

よろしくお願いします

ケブ

4

2 に答える 2

2

Python 自体はタイムゾーンを処理できません。そのためには外部ライブラリが必要です。たとえば、dateutil :

from dateutil.parser import parse
dt = parse("Sun, 28 Aug 2016 11:42:00 +0200")
于 2016-08-29T11:26:07.843 に答える
1

これだけでうまくいくはずです:

from datetime import datetime
date_published = datetime.strptime(date_published, "%a, %d %b %Y %H:%M:%S %z")

私が得るリターンはdatetime.datetime(2016, 8, 28, 11, 42, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))

于 2016-08-29T15:08:01.777 に答える