Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python 現在時刻の取得、フォーマットの変換

まずは、datetimeオブジェクトをインポートします。

>>> from datetime import datetime

現在時刻の取得

datetime.today()で現在のローカル時刻が取得できます。

>>> datetime.today()
datetime.datetime(2018, 3, 27, 9, 46, 16, 804000)

datetime.now()も引数の指定がなければ、today()と同様に現在のローカル時刻を取得できます。

>>> datetime.now()
datetime.datetime(2018, 3, 27, 9, 43, 9, 524000)

UTC時刻の取得方法は以下の通りです。JSTとUCT間の変換については、また別途。

>>> datetime.utcnow()
datetime.datetime(2018, 3, 27, 1, 7, 3, 435000)

返される値の定義は以下の通りとなります。月(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")
'20180329213628'

文字列から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()
'2018-03-29T21:56:30.244975'

epochへの変換

下記の記事を参照して下さい。datetimeモジュールではなくtimeモジュールを使用していますが。
zakiyamatakashi.hatenablog.com
他のサイトをみていると、datetimeモジュールでもstrftimeに"%s"(小文字のs)を指定することでepoch時刻が取得できるようですが、フォーマットの一覧に"%s"(小文字のs) は記載されていません。うーん、どこか別の仕様に記載されているのかな?と言うわけで、あくまで参考と言うことで。