pythonのdatetimeクラスで取得できる日付フォーマット色々
最近、時間を管理するプログラムを作ったのでその時のメモ
datetimeクラスってどうやって使うの?
標準モジュールなのでimportするだけで使えます。
from datetime import datetime
現在時刻の取得
datetimeクラスのnowメソッドで取得できます。
datetime.now()
# 2018-10-11 18:31:13.271231
任意の日付を作る
datetimeクラスのコンストラクタは以下のようになっています。
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
year
,month
,day
,は必須。そのほかは省略可、省略した場合は0
になる。
日付の要素を取り出す
datetimeオブジェクトから年、月、日、時、分、秒を取り出す例
datetime.year # 年
datetime.month #月
datetime.day # 日
datetime.hour # 時
datetime.minute # 分
datetime.second # 秒
datetime.microsecond # マイクロ秒
UNIX時間を取り出す
datetime.timestamp()
ISO フォーマット
datetime.isoformat()
#'2018-10-10T22:30:31.059695'
任意の形にフォーマット
datetime.strftime('%Y-%m-%d %H:%M:%S')
# 2018-10-10 18:31:13
書式化コード
- %d : 0埋めした10進数で表記した月中の日にち
- %m : 0埋めした10進数で表記した月
- %y : 0埋めした10進数で表記した西暦の下2桁
- %Y : 0埋めした10進数で表記した西暦4桁
- %H : 0埋めした10進数で表記した時 (24時間表記)
- %I : 0埋めした10進数で表記した時 (12時間表記)
- %M : 0埋めした10進数で表記した分
- %S : 0埋めした10進数で表記した秒
- %f : 0埋めした10進数で表記したマイクロ秒(6桁)
- %A : ロケールの曜日名
- %a : ロケールの曜日名(短縮形)
- %B : ロケールの月名
- %b : ロケールの月名(短縮形)
- %j : 0埋めした10進数で表記した年中の日にち(正月が'001’)
- %U : 0埋めした10進数で表記した年中の週番号 (週の始まりは日曜日)
- %W : 0埋めした10進数で表記した年中の週番号 (週の始まりは月曜日)
曜日名や月名の%A, %a, %B, %bはロケールによって取得できる文字列が異なります。
文字列から日付、時刻へ
date_string = "2018/10/10 22:42"
date_date = datetime.strptime(date_string, "%Y/%m/%d %H:%M")
# 2018-10-10 22:42:00
書式化コードは先ほどと共通