まずは、datetimeオブジェクトをインポートします。
>>> from datetime import datetime
現在時刻の取得
datetime.today()で現在のローカル時刻が取得できます。
>>> datetime.today()
datetime.datetime(2019, 11, 26, 9, 24, 17, 284989)
datetime.now()も引数の指定がなければ、today()と同様に現在のローカル時刻を取得できます。
>>> datetime.now()
datetime.datetime(2019, 11, 26, 9, 24, 45, 145877)
UTC時刻の取得方法は以下の通りです。JSTとUCT間の変換については、また別途。
>>> datetime.utcnow()
datetime.datetime(2019, 11, 26, 0, 25, 3, 166102)
返される値の定義は以下の通りとなります。月(month)などの定義値がjavascriptと違うので注意が必要ですね。。。。
- MINYEAR(1) <= year <= MAXYEAR(9999)
- 1 <= month <= 12
- 1 <= day <= 指定された月と年における日数
- 0 <= hour < 24
- 0 <= minute < 60
- 0 <= second < 60
- 0 <= microsecond < 1000000
時刻のフォーマット変換
datetimeから文字列への変換
strftimeに取得したい文字列のフォーマットを指定します
>>> datetime.now().strftime("%Y%m%d%H%M%S")
'20191126092652'
文字列からdatetimeへの変換
strptimeに文字列と文字列のフォーマットを指定します。指定フォーマットはstrftimeと同じです。
>>> datetime.strptime('2018/03/28 21:33:38', '%Y/%m/%d %H:%M:%S')
datetime.datetime(2018, 3, 28, 21, 33, 38)
>>> datetime.strptime('2018-03-28 21:33:38', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2018, 3, 28, 21, 33, 38)
datetimeからISOフォーマットへの変換
>>> datetime.now().isoformat()
'2019-11-26T09:27:53.863083'
epochへの変換
下記の記事を参照して下さい。datetimeモジュールではなくtimeモジュールを使用していますが。
zakiyamatakashi.hatenablog.com
他のサイトをみていると、datetimeモジュールでもstrftimeに"%s"(小文字のs)を指定することでepoch時刻が取得できるようですが、フォーマットの一覧に"%s"(小文字のs) は記載されていません。うーん、どこか別の仕様に記載されているのかな?と言うわけで、あくまで参考と言うことで。