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

書式化コードは先ほどと共通