liquidjumper Python Pythonのtimeモジュールで現在の日付・時間を取得する

Pythonのtimeモジュールで現在の日付・時間を取得する

python_time_module_time_topimage

Pythonで時間を扱う場合は timeモジュール を使います。

timeモジュールを使用して現在の日付・時間を取得する事が出来ます。

簡単に日付・時間を取得できるtimeモジュールですが、”ローカル時間”、”協定世界時 (Coordinated Universal Time)”、”エポック秒” などがあり、時間経過の比較に使うのか、時間の表示に使うのか、など扱う場面によって使う関数を変える必要があります。

この記事ではPythonのtimeモジュールを使った現在の日付・時間を取得する方法を紹介します。


timeモジュールで現在の日付を取得する

Pythonで現在の日付を取得する場合は

time モジュールを使います。

早速timeモジュールを使って現在の時間を取得してみます。

日付をローカル時間で取得

時間にはローカル時間と協定世界時 (Coordinated Universal Time)があります。
それぞれに違う関数が用意されているので、まずはローカル時間の取得から試してみます。

現在の日付をローカル時間で取得する場合は

time.localtime() 関数を使います。

import time


print(time.localtime())


実行:

現在のローカル時間がtime.struct_time 時刻値シーケンスの型 で返されました。

time.struct_time(tm_year=2020, tm_mon=9, tm_mday=15, tm_hour=10, tm_min=43, tm_sec=11, tm_wday=1, tm_yday=259, tm_isdst=0)


時刻値シーケンスの型は以下の値があります

インデックス属性
0tm_year年: 2019 など
1tm_mon月:1から12
2tm_mday日:1から31
3tm_hour時:0から23
4tm_min分:0から59
5tm_sec秒:値の幅は 0 から 61。60はうるう秒※1
6tm_wday曜日:月曜日が0 [0,6] の間の数
7tm_yday年の日数:[1,366] の間の数
8tm_isdst夏時間のフラグ:0,1 又は不明の場合-1
N/Atm_zoneタイムゾーンの短縮名
N/Atm_gmtoff協定世界時UTC から東方向へのオフセット (秒)
※1値の幅は実際に 0 から 61 です; 60 は うるう秒<leap seconds> を表し、 61 は歴史的理由によりサポートされています。
Pythonドキュメント

日付を協定世界時 (Coordinated Universal Time)で取得

今度は協定世界時 (Coordinated Universal Time)で取得したいと思います。

現在の日付を協定世界時(UTC)で取得する場合は

time.gmtime() 関数を使用します。

import time


print(time.gmtime())


実行:

現在の協定世界時(UTC)がtime.struct_time 時刻値シーケンスの型 で返されました。

time.struct_time(tm_year=2020, tm_mon=9, tm_mday=15, tm_hour=2, tm_min=2, tm_sec=19, tm_wday=1, tm_yday=259, tm_isdst=0)

指定した形式の文字列に変換

time.struct_time 時刻値シーケンスの型で返された値を、指定した形式の文字列に変換するには

time.strftime()の関数を使います。

directive意味
%aロケールの短縮された曜日名
%Aロケールの曜日名
%bロケールの短縮された月名
%Bロケールの月名
%cロケールの日時を適切な形式で表します
%d月中の日にちの 10 進表記
%H時 (24 時間表記) の 10 進表記
%I時 (12 時間表記) の 10 進表記
%j年中の日にちの 10 進表記
%m月の 10 進表記
%M分の 10 進表記
%pロケールの”AM”もしくは”PM”
%S秒の 10 進表記
%U年の初めから何週目かを10進数で表す (日曜が週の始まり)
%w曜日を10進数で表記
%W年の初めから何週目かを10進数で表す (月曜が週の始まり)
%xロケールの日付を適切な形式で表記
%Xロケールの時間を適切な形式で表記
%y西暦の下2桁を10進表記で表す[00,99]
%Y西暦(4桁)を10進表記で表す
%zタイムゾーンとUTC/GMTとの時差を表す
%Zタイムゾーンの名前を表す
%%文字”%”を表す


time.struct_time 時刻値シーケンスの型から形式を指定して文字列に変換します。

import time
from time import strftime

print(strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))


実行:

指定した形式で日付と曜日、時刻が出力されました。

Tue, 15 Sep 2020 10:51:00

日付をエポック秒で取得する

日付の新古を比べる場合は「Tue, 15 Sep 2020 10:51:00」のような型では比較できません。

時間の経過を比べる場合は エポック秒 を使うと簡単に比較する事が可能です。

エポック秒とは「UNIX時間」の事

UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。UNIXエポック、すなわち協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数(すなわち、実質的な経過秒数から、その間に挿入された閏秒を引き、削除された閏秒を加えたもの)として表される。GPS時刻などとは異なり、大多数のシステムでは、本当の経過秒数を表すものではない

Wikipedia

つまり1970年1月1日午前0時0分0秒からの経過秒数 を表します。
“数字が小さければ古いし、数字が大きければ新しい” ので簡単に日付を比較する事ができます。

日付をエポック秒で取得する場合は

time.time()関数を使います。

import time

print(time.time())


実行:

日付がエポック秒で返されました。

1600135711.04

エポック秒をローカル時間と協定世界時(UTC)に変換する

time.time()で返されるエポック秒は比較・計算する場合は良いですが、日付を確認する場合は都合がよくありません。

なのでエポック秒を日付で確認できるtime.struct_time 時刻値シーケンスの型に変換します。

import time

print(time.time())
print(time.localtime(time.time()))
print(time.gmtime(time.time()))


実行:

エポック秒・時刻値シーケンスの型のローカル時間・協定世界時(UTC)が返されました。

1600136817.11
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=15, tm_hour=11, tm_min=26, tm_sec=57, tm_wday=1, tm_yday=259, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=15, tm_hour=2, tm_min=26, tm_sec=57, tm_wday=1, tm_yday=259, tm_isdst=0)

まとめ

Pythonで現在の日付を取得する方法を紹介しました。

Pythonで日付・時間を扱う場合は timeモジュール を使います。

現在の日付をローカル時間で取得する場合の関数は
time.localtime()

現在の日付を協定世界時(UTC)で取得する場合の関数は
time.gmtime()

time.struct_time 時刻値シーケンスの型で返された値を、指定した形式の文字列に変換する場合は
time.strftime()

日付をエポック秒で取得する場合の関数は
time.time()








SAMURAI ENGINEER Plus+

𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事