2021-08-19に投稿

Python 標準ライブラリ time 時刻

時刻(日時)の取得や変換はtimeモジュールに用意されている関数を使って行うことができます。

概要

時刻(日時)は以下の形式で表現されます。

  • 文字列('Wed Aug 18 23:54:50 2021'や'2021-08-19 23:54:50'等)
  • エポック(epoch 1970/01/01 00:00:00)からの経過秒数
  • struct_time型(年、月、秒等の値を持った型)

文字列形式で時刻(日時)を取得

エポック秒 → 文字列

# 現在日時を取得
time.ctime() # => 'Wed Aug 18 23:52:55 2021'

# 指定したエポックからの秒数の日時を取得
time.ctime(time.time()) # => 'Wed Aug 18 23:54:50 2021'
time.ctime(1628778159) # => 'Thu Aug 12 23:22:39 2021'

# 上記は以下と同様
# time.asctime(time.localtime(1628778159)) # => 'Thu Aug 12 23:22:39 2021'

struct_time → 文字列

# 現在日時を取得
time.asctime() # => 'Wed Aug 18 23:51:44 2021'

# 指定したstruct_timeの日時を取得
time.asctime(time.localtime()) # => 'Wed Aug 18 23:54:15 2021'

strftime(format[, t])を使うと、指定した形式で文字列の取得ができる。
第2引数はstruct_timeで省略した場合は現在時刻のlocaltime()が指定される。

# 年月日時分秒とタイムゾーン
time.strftime('%Y/%m/%d %H:%M:%S%z') # => '2021/08/19 00:47:44+0900'

# 午前午後の文字列と12時間表記時刻
time.strftime('%p %I時') # => 'AM 12時'

# 曜日
time.strftime('%a') # => 'Thu'
time.strftime('%A') # => 'Thursday'
time.strftime('%w') # => '4' (0:日曜日,…6:土曜日)

# 月
time.strftime('%b') # => 'Aug'
time.strftime('%B') # => 'August'

# ロケールでの表示
time.strftime('%c') # => 'Thu Aug 19 00:39:38 2021'

# 年月日
time.strftime('%x') # => '08/19/21'

# 時分秒
time.strftime('%X') # => '00:46:11'

# 2桁年数
time.strftime('%y') # => '21'

# 週数と日数
time.strftime('第%U週(日曜起算) 第%W週(月曜起算) 第%j日目') # => '第33週(日曜起算) 第33週(月曜起算) 第231日目'

# タイムゾーン名称
time.strftime('%Z') # => '東京 (標準時)'

エポック秒数で時刻を取得

エポックからの現在秒数

# 秒
time.time() # => 1629302004.3049362

# ナノ秒
time.time_ns() # => 1629302009858687200

struct_time → エポック秒

# struct_time(ローカル時間)から取得
time.mktime(time.localtime()) # => 1629299532.0
time.mktime(time.localtime(1629299532.0)) # => 1629299532.0

struct_timeで時刻(日時)を取得

文字列 → struct_time

strptime(string[, format])を使うと時刻を示す文字列からstruct_timeを取得できる。

# 書式指定なし('%a %b %d %H:%M:%S %Y'のフォーマットで変換)
time.strptime('Thu Aug 19 00:56:58 2021')
# => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=56, tm_sec=58, tm_wday=3, tm_yday=231, tm_isdst=-1)

# 年月日指定
time.strptime('2021/08/19','%Y/%m/%d')
# => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=231, tm_isdst=-1)

# 年月日時分秒指定
time.strptime('2021/08/19 00:59:10','%Y/%m/%d %H:%M:%S')
# => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=59, tm_sec=10, tm_wday=3, tm_yday=231, tm_isdst=-1)

エポック秒 → struct_time(UTC)

# 現在日時(UTC)を取得
time.gmtime() # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=18, tm_hour=15, tm_min=5, tm_sec=4, tm_wday=2, tm_yday=230, tm_isdst=0)

# 指定したエポックからの秒数の日時(UTC)を取得
time.gmtime(time.time()) # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=18, tm_hour=15, tm_min=8, tm_sec=43, tm_wday=2, tm_yday=230, tm_isdst=0)
time.gmtime(1628778159) # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=12, tm_hour=14, tm_min=22, tm_sec=39, tm_wday=3, tm_yday=224, tm_isdst=0)

エポック秒 → struct_time(ローカル時)

# 現在日時(ローカル時)を取得
time.localtime() # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=5, tm_sec=6, tm_wday=3, tm_yday=231, tm_isdst=0)

# 指定したエポックからの秒数の日時(ローカル時)を取得
time.localtime(time.time()) # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=9, tm_sec=31, tm_wday=3, tm_yday=231, tm_isdst=0)
time.localtime(1628778159) # => time.struct_time(tm_year=2021, tm_mon=8, tm_mday=12, tm_hour=23, tm_min=22, tm_sec=39, tm_wday=3, tm_yday=224, tm_isdst=0)

スリープ・休止

指定した秒数だけスレッドの実行を停止。

time.sleep(0.5)
time.sleep(1)

参考

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント