cgiからpythonを動かして色々とやるツールを少し前からちょこちょこ作ってる
その中で不特定多数のユーザーが走らせたコマンドを記録したくなった
いつ走らせたか、どんなオプションを使ったか
これをログに残しておく
そこで走らせた日付を知りたい
Pythonのdatetimeで日付や時間と文字列を変換(strftime, strptime) | note.nkmk.me
import datetime d_today = datetime.date.today() print(d_today) # 2019-02-04 とか 時間入りで日付を知りたいときはnowを使う dt_now = datetime.datetime.now() print(dt_now) # 2019-02-04 21:04:15.412854
このdatetime型を任意の形式で出力したい
C言語で例えるなら、printf("%f %f")みたいなことをやりたい
datetime --- 基本的な日付と時間の型 — Python 3.13.1 ドキュメント
月を取り出したい時とか年を取り出したい時は、それぞれ使うものが決まってる
主な書式コードを挙げておく。
よく使うものだけリストしておく
- %Y: 0埋めした10進数で表記した西暦4桁
- %y: 0埋めした10進数で表記した西暦の下2桁
- %m: 0埋めした10進数で表記した月
- %d: 0埋めした10進数で表記した月中の日にち
- %H: 0埋めした10進数で表記した時 (24時間表記)
- %I: 0埋めした10進数で表記した時 (12時間表記)
- %M: 0埋めした10進数で表記した分
- %S: 0埋めした10進数で表記した秒
- %f: 0埋めした10進数で表記したマイクロ秒(6桁)
- %Z: timezone
timezoneについては
Python, datetime, pytzでタイムゾーンを設定・取得・変換・削除 | note.nkmk.me
これを使って
import datetime dt_now = datetime.datetime.now() print(dt_now.strftime('%Y-%m-%d %H:%M:%S')) # 2024-10-08 10:45:41 のように表示される
みたいにすれば良い
UTCから日本時間んに変換したい時は
import datetime JST_beg = utc_beg + datetime.timedelta(hours=9)
1日前の日付にしたいときは
import datetime utc = utc_beg + datetime.timedelta(days=-1)
時間, 分、秒に0を代入したい場合
import datetime utc = utc_beg.replace(hour=0, minute=0, second=0)
Python | 日付や時刻の一部の値を別の値に置き換えたインスタンスを生成する
ランキングに参加中、クリックにご協力お願いします!