AI の出力チェック4 択難易度 応用

状況

ログの時刻を UTC でそろえる方法を AI アシスタントに聞いた。環境は Python 3.12。

AI アシスタント
  1. あなた

    Python でタイムゾーンつきの UTC の現在時刻を取るには?

  2. AI

    datetime.utcnow() を使えば、タイムゾーン情報つきの UTC 時刻が得られます。最新の推奨される書き方です。

② の説明の誤りは?

正答

  1. utcnow() はタイムゾーン情報の無い値を返し、3.12 で非推奨になった
  2. utcnow() は UTC ではなく、OS に設定された日本時間を返す
  3. utcnow() は Python 3.0 で削除されたので、呼ぶとエラーになる
  4. utcnow() は秒までしか持たず、ミリ秒以下が切り捨てられる

解説

datetime.utcnow() は UTC の時刻を返すが、タイムゾーン情報(tzinfo)を持たない naive な値で、ほかの処理からはローカル時刻と区別がつかない。Python 3.12 で非推奨になり、公式ドキュメントは datetime.now() に UTC を渡す書き方(datetime.now(timezone.utc)。3.11 以降は datetime.UTC も同じ)を勧めている。AI は昔のコードに多い書き方を「最新の推奨」と言い切ることがある。値そのものは UTC なので「日本時間を返す」は誤り。3.12 でも警告が出るだけで、削除されてはいない。マイクロ秒まで持つので、秒で切り捨てられることもない。

参考: docs.python.org

pythondatetimetimezonedeprecated-api

この問題を含む AI の出力チェック のテストを制限時間つきで解く

AI の出力チェッククイズへ