実践・中級問題チェック
問題 21 /40
「2023/01/01 00:00:00」の文字列を取得する場合、誤っているものはどれか。
datetimeモジュールのdate、time、datetimeオブジェクトをインポートしているものとする。
選択 1
newyear = datetime(2023, 1, 1, 0, 0, 0)
newyear.fromisoformat('%Y/%m/%d %H:%M:%S')
選択 2
newyear = datetime(2023, 1, 1, 0, 0, 0)
newyear.strftime('%Y/%m/%d %H:%M:%S')
選択 3
newyear = datetime(2023, 1, 1, 0, 0, 0)
f'{newyear:%Y/%m/%d %H:%M:%S}'
選択 4
date = date(2023, 1, 1)
time = time(0, 0, 0)
f'{date:%Y/%m/%d} {time:%H:%M:%S}'
解説
選択肢1が正解です。
【選択肢1】
「ValueError: Invalid isoformat string: '%Y/%m/%d %H:%M:%S'」のエラーになります。
fromisoformatは、ISO8601形式で文字列をdatetimeオブジェクトに変換するメソッドです。文字列に変換するメソッドではありません。
【選択肢2】
結果は「'2023/01/01 00:00:00'」になります。
strftimeはdatetimeオブジェクトを文字列に変換するメソッドです。
【選択肢3、4】
結果は「'2023/01/01 00:00:00'」になります。
datetimeオブジェクトを文字列に変換する場合、選択肢3や4のようにf-stringを使うこともできます。
(公式書籍 p.165-166、132-133)