Python Version 3 Logo

[Python]現在日付・時刻を取得する

Python の標準ライブラリの datetime モジュールを利用した現在日付・時刻の取得方法を説明していきます。

前提条件

下記の環境で動作検証しています。

  • Python : 3.6.2

現在日時を取得する

import datetime

dt = datetime.datetime.now()

print(dt)
# 2020-05-05 21:27:27.557578

上記の実装で現在の日付、時刻を取得できます。 datetime オブジェクトとして日付・時刻を取得しているので、任意の書式の文字列に変換することもできます。

print(dt.strftime('%Y年%m月%d日 %H:%M:%S'))
# 2020年05月05日 21:30:54

datetime オブジェクトから年、月、日、時、分、秒、ミリ秒を取得することもできます。

# 年(year)
print(dt.year)
# 2020

# 月(month)
print(dt.month)
# 5

# 日(day)
print(dt.day)
# 5

# 時(hour)
print(dt.hour)
# 21

# 分(minute)
print(dt.minute)
# 35

# 秒(second)
print(dt.second)
# 28

# ミリ秒(microsecond)
print(dt.microsecond)
# 122017

現在日付を取得する

現在日時のオブジェクトは取得できたので、これを現在日付に変換してみます。

# 文字列に変換する場合
print(dt.strftime('%Y年%m月%d日'))
# 2020年05月05日

print("{0:%Y年%m月%d日}".format(dt))
# 2020年05月05日

# dateオブジェクトとして変換する場合
print(datetime.date(dt.year, dt.month, dt.day))
# 2020-05-05

変換方法はいくつかあるので、状況に応じた実装をすればよいと思います。

現在時刻を取得する

現在時刻に変換する方法は下記の通りです。

print(dt.strftime('%H:%M:%S'))
# 21:44:22

print("{0:%H:%M:%S}".format(dt))
# 21:44:22

タイムゾーンを考慮した現在日時の取得方法

datetime オブジェクトはデフォルトではローカルな日時を返却しますが、「 now() 」でタイムゾーンを設定することで設定したタイムゾーンの日時を取得することができます。

dt_utc = datetime.datetime.now(datetime.timezone.utc)

print(dt_utc)
# 2020-05-05 12:48:23.851102+00:00

print(dt_utc.tzinfo)
# UTC

ちなみに UTC の現在日時を取得するだけであれば、 UTC の現在日時を取得するモジュールは標準で準備されています。

print(datetime.datetime.utcnow())
# 2020-05-05 12:51:13.624632

UNIX 時間(エポック秒)を取得したい場合

参考までに UNIX 時間の取得方法も説明しておきます。

UNIX 時間(エポック秒)とは、 UTC (協定世界時)の1970年01月01日00時00分00秒からの経過秒数です。 time モジュールの time() 関数を利用することで取得可能です。 float 型で UNIX 時間を取得できます。

import time

unix_time = time.time()
print(unix_time)
# 1588683359.849664

最後に

datetime モジュールと time モジュールの基本的な使用方法について説明しました。日付や時刻のフォーマットの方法やタイムゾーンの設定、 UNIX 時間の取得など、一言に現在日時と行ってもいろいろな取得方法や実装方法があるので、しっかり基礎をおさえて開発に活かしていきたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です