工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python 日付と時刻の完全マスター:実践的ガイド

Python プログラムは、日付と時刻をいくつかの方法で扱えます。日付フォーマット間の変換はコンピュータの一般的な作業です。Python の time モジュールと calendar モジュールは、日付と時刻の追跡に役立ちます。

ティック(Tick)とは

時間間隔は、秒単位の浮動小数点数で表されます。特定の時点は、1970 年 1 月 1 日 00:00:00(エポック)からの秒数で表現されます。

Python には time という一般的なモジュールがあり、時刻の操作や表現間の変換のための関数を提供します。関数 time.time() は、1970 年 1 月 1 日 00:00:00(エポック)からの現在のシステム時刻をティック単位で返します。

例

ライブ デモ
#!/usr/bin/python
import time
# time モジュールをインクルードするために必要
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

次のような結果が得られます。

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

ティックを使用すると日付計算が簡単です。しかし、エポックより前の日付はこの形式で表現できません。遠い未来の日付もこの方法では表現できません。カットオフポイントは、UNIX と Windows では 2038 年ごろです。

TimeTuple(タイムタプル)とは

Python の多くの time 関数は、以下のように 9 個の数値のタプルとして時刻を扱います。

インデックスフィールド値
04桁の年2008
1月1 から 12
2日1 から 31
3時0 から 23
4分0 から 59
5秒0 から 61(60 または 61 は閏秒)
6曜日0 から 6(0 は月曜日)
7年内通算日1 から 366(ユリウス日)
8夏時間-1, 0, 1。-1 はライブラリが DST を決定

上記のタプルは struct_time 構造体と等価です。この構造体には以下の属性があります。

インデックス属性値
0tm_year2008
1tm_mon1 から 12
2tm_mday1 から 31
3tm_hour0 から 23
4tm_min0 から 59
5tm_sec0 から 61(60 または 61 は閏秒)
6tm_wday0 から 6(0 は月曜日)
7tm_yday1 から 366(ユリウス日)
8tm_isdst-1, 0, 1。-1 はライブラリが DST を決定

現在時刻の取得

エポックからの秒数 という浮動小数点値からタイムタプルに変換するには、その浮動小数点値を関数(例:localtime)に渡します。この関数は、すべての 9 項目が有効なタイムタプルを返します。

ライブ デモ
#!/usr/bin/python
import time
localtime = time.localtime(time.time())
print "Local current time :", localtime

次の結果が得られます。これは他の表示形式にもフォーマット可能です。

Local current time : time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

フォーマット済み時刻の取得

要件に応じて任意の時刻をフォーマットできますが、読みやすい形式で時刻を取得する簡単な方法は asctime() です。

ライブ デモ
#!/usr/bin/python
import time
localtime = time.asctime(time.localtime(time.time()))
print "Local current time :", localtime

次の結果が得られます。

Local current time : Tue Jan 13 10:17:09 2009

月間カレンダーの取得

calendar モジュールは、年単位および月単位のカレンダーを操作する幅広いメソッドを提供します。ここでは、指定された月(2008 年 1 月)のカレンダーを出力します。

ライブ デモ
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

次の結果が得られます。

Here is the calendar:
January 2008
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

time モジュール

時刻の操作と表現間の変換のための関数を提供する一般的な time モジュールが Python にあります。利用可能なすべてのメソッドの一覧:

番号関数と説明
1time.altzone

ローカル DST タイムゾーンのオフセット(UTC から西への秒数)。ローカル DST タイムゾーンが UTC の東にある場合(西ヨーロッパ、英国など)、負の値になります。daylight が非ゼロの場合のみ使用。

2time.asctime([tupletime])

タイムタプルを受け取り、'Tue Dec 11 18:07:14 2008' のような読みやすい 24 文字の文字列を返す。

3time.clock()

現在の CPU 時間を浮動小数点数(秒)で返す。異なるアプローチの計算コストを測定するには、time.clock の値の方が time.time() より有用。

4time.ctime([secs])

asctime(localtime(secs)) と同様。引数なしの場合は asctime() と同様。

5time.gmtime([secs])

エポックからの秒数で表される瞬間を受け取り、UTC 時刻のタイムタプル t を返す。注意:t.tm_isdst は常に 0。

6time.localtime([secs])

エポックからの秒数で表される瞬間を受け取り、ローカル時刻のタイムタプル t を返す(t.tm_isdst は、ローカルルールによって瞬時 secs に DST が適用されるかどうかにより 0 または 1)。

7time.mktime(tupletime)

ローカル時刻で表されるタイムタプルとしての瞬間を受け取り、エポックからの秒数で表される浮動小数点値を返す。

8time.sleep(secs)

呼び出しスレッドを secs 秒間一時停止。

9time.strftime(fmt[,tupletime])

ローカル時刻で表されるタイムタプルとしての瞬間を受け取り、文字列 fmt で指定された形式で瞬時を表す文字列を返す。

10time.strptime(str, fmt='%a %b %d %H:%M:%S %Y')

文字列 str をフォーマット文字列 fmt に従って解析し、タイムタプル形式で瞬間を返す。

11time.time()

現在の時刻瞬間、エポックからの秒数の浮動小数点数を返す。

12time.tzset()

ライブラリルーチンで使用される時刻変換ルールをリセット。環境変数 TZ でこれを指定。

time モジュールには以下の 2 つの重要な属性があります。

属性 time.tzname は、ローカルタイムゾーンの DST なしと DST ありの名前である、ロケール依存の 2 つの文字列の組み合わせ。

番号属性と説明
1

time.timezone

属性 time.timezone は、ローカルタイムゾーン(DST なし)の UTC からのオフセット(秒)。(アメリカでは >0、ヨーロッパ、アジア、アフリカの大部分では <=0)

2

time.tzname

calendar モジュール

calendar モジュールは、指定された月または年のテキストカレンダーを印刷する関数など、カレンダー関連の関数を提供します。

デフォルトでは、calendar は月曜日を週の最初の日、日曜日を最後の日として扱います。これを変更するには、calendar.setfirstweekday() 関数を呼び出します。

calendar モジュールで利用可能な関数の一覧:

番号関数と説明
1

calendar.calendar(year, w=2, l=1, c=6)

年 year のカレンダーを、c スペースで区切られた 3 列にフォーマットした複数行の文字列を返す。w は各日付の文字幅、各行の長さは 21*w+18+2*c。l は週ごとの行数。

2

calendar.firstweekday()

週の開始曜日として現在設定されている曜日コードを返す。デフォルトでは、calendar を最初にインポートしたとき、これは 0(月曜日を意味する)。

3

calendar.isleap(year)

year が閏年なら True、そうでなければ False を返す。

4

calendar.leapdays(y1, y2)

range(y1, y2) の範囲内の年数における閏日の総数を返す。

5

calendar.month(year, month, w=2, l=1)

年 year の月 month のカレンダーを、週ごと 1 行プラス 2 ヘッダー行の複数行文字列で返す。w は各日付の文字幅、各行の長さは 7*w+6。l は週ごとの行数。

6

calendar.monthcalendar(year, month)

整数のリストのリストを返す。各サブリストは 1 週間を表す。年 year の月 month の範囲外の日は 0、範囲内の日はその月日(1 以上)に設定される。

7

calendar.monthrange(year, month)

2 つの整数を返す。最初は年 year の月 month の最初の日の曜日コード、2 番目はその月の日数。曜日コードは 0(月曜日)から 6(日曜日)、月番号は 1 から 12。

8

calendar.prcal(year, w=2, l=1, c=6)

print calendar.calendar(year, w, l, c) と同様。

9

calendar.prmonth(year, month, w=2, l=1)

print calendar.month(year, month, w, l) と同様。

10

calendar.setfirstweekday(weekday)

各週の最初の日を曜日コード weekday に設定。曜日コードは 0(月曜日)から 6(日曜日)。

11

calendar.timegm(tupletime)

time.gmtime の逆関数:タイムタプル形式の時刻瞬間を受け取り、同じ瞬間をエポックからの秒数の浮動小数点数で返す。

12

calendar.weekday(year, month, day)

指定された日付の曜日コードを返す。曜日コードは 0(月曜日)から 6(日曜日)、月番号は 1(1月)から 12(12月)。

その他のモジュールと関数

興味があれば、Python で日付と時刻を操作するためのその他の重要なモジュールと関数のリストを以下に示します。

Python

  1. Python データ型マスター: 実践ガイド
  2. Python 演算子完全マスター: 包括的ガイド
  3. Python pass文完全マスター: 実践ガイド
  4. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  5. Python辞書完全ガイド:作成、操作、高度なテクニック
  6. Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
  7. Pythonで現在の日付と時刻を取得する実践ガイド
  8. Pythonで現在時刻とタイムゾーンデータを簡単に取得する
  9. Pythonのtimeモジュールをマスター:関数、構造体、実践例
  10. Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
  11. Java日付時刻完全ガイド:Date/Calendar/SimpleDateFormat/printf