実践・中級問題チェック

問題 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)