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 時刻値シーケンスの型 で返されました。
時刻値シーケンスの型は以下の値があります
インデックス | 属性 | 値 |
0 | tm_year | 年: 2019 など |
1 | tm_mon | 月:1から12 |
2 | tm_mday | 日:1から31 |
3 | tm_hour | 時:0から23 |
4 | tm_min | 分:0から59 |
5 | tm_sec | 秒:値の幅は 0 から 61。60はうるう秒※1 |
6 | tm_wday | 曜日:月曜日が0 [0,6] の間の数 |
7 | tm_yday | 年の日数:[1,366] の間の数 |
8 | tm_isdst | 夏時間のフラグ:0,1 又は不明の場合-1 |
N/A | tm_zone | タイムゾーンの短縮名 |
N/A | tm_gmtoff | 協定世界時UTC から東方向へのオフセット (秒) |
Pythonドキュメント
日付を協定世界時 (Coordinated Universal Time)で取得
今度は協定世界時 (Coordinated Universal Time)で取得したいと思います。
現在の日付を協定世界時(UTC)で取得する場合は
time.gmtime() 関数を使用します。
import time
print(time.gmtime())
実行:
現在の協定世界時(UTC)がtime.struct_time 時刻値シーケンスの型 で返されました。
指定した形式の文字列に変換
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」のような型では比較できません。
時間の経過を比べる場合は エポック秒 を使うと簡単に比較する事が可能です。
エポック秒とは「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())
実行:
日付がエポック秒で返されました。
エポック秒をローカル時間と協定世界時(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()
|
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|