[解決済み] Pythonの.isoformat()の文字列をdatetimeオブジェクトに戻す方法 [重複] (英語)
2022-12-05 18:39:44
質問
Python 3では、.isoformat()でISO 8601の日付を生成することができますが、isoformat()で生成した文字列をdatetimeオブジェクトに戻すことはできません。Python自身のdatetimeディレクティブが適切にマッチしないからです。つまり、(.isoformat()によって生成される)05:00ではなく、%z = 0500となります。
例えば
>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'
>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\Lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Python34\Lib\_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Pythonのstrptimeのドキュメントより: ( https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior )
z UTCオフセットは+HHMMまたは-HHMMの形式です(オブジェクトがナイーブな場合は空文字列)。 オブジェクトがナイーブな場合、空文字列)。 (空)、+0000、-0400、+1030。
つまり、Pythonは自分自身の文字列書式指定ディレクティブにすら従わないということです。
Pythonでdatetimeがすでにひどいのは知っていますが、これは本当に理不尽を通り越して、単なる愚かさの域に達しています。
これが真実でないと言ってください。
どのように解決するのですか?
Python 3.7以上
Python 3.7ではメソッド
datetime.fromisoformat()
というメソッドがあり、これはまさにその逆で
isoformat()
.
古い Python
もしあなたが古いPythonを持っているなら、これはこの質問に対する現在の最良の"解決策"です。
pip install python-dateutil
次に...
import datetime
import dateutil
def getDateTimeFromISO8601String(s):
d = dateutil.parser.parse(s)
return d
関連
-
[解決済み] バイトを文字列に変換する
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み] datetimeをdateに変換するにはどうすればよいですか?
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Django filter queryset __in for *every* item in list