Python-日付と時刻

Pythonプログラムは、いくつかの方法で日付と時刻を処理できます。日付形式間の変換は、コンピューターの一般的な雑用です。Pythonの時刻モジュールとカレンダーモジュールは、日付と時刻の追跡に役立ちます。

ティックとは何ですか?

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

人気があります time時間の操作や表現間の変換のための関数を提供するPythonで利用可能なモジュール。関数time.time()は、1970年1月1日(エポック)の00:00:00以降の現在のシステム時刻をティックで返します。

#!/usr/bin/python
import time;  # This is required to include time module.

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の時間関数の多くは、以下に示すように、時間を9つの数値のタプルとして処理します。

インデックス フィールド
0 4桁の年 2008年
1 1から12
2 1から31
3 時間 0から23
4 0から59
5 2番目 0から61(60または61はうるう秒です)
6 曜日 0から6(0は月曜日)
7 曜日 1から366(ユリウス日)
8 夏時間 -1、0、1、-1は、ライブラリがDSTを決定することを意味します

上記のタプルは struct_time構造。この構造には次の属性があります-

インデックス 属性
0 tm_year 2008年
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または61はうるう秒です)
6 tm_wday 0から6(0は月曜日)
7 tm_yday 1から366(ユリウス日)
8 tm_isdst -1、0、1、-1は、ライブラリがDSTを決定することを意味します

現在の時刻を取得する

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

#!/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

1か月のカレンダーを取得する

カレンダーモジュールは、年次および月次カレンダーを操作するためのさまざまな方法を提供します。ここでは、特定の月(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時間の操作や表現間の変換のための関数を提供するPythonで利用可能なモジュール。これが利用可能なすべての方法のリストです-

シニア番号 説明付きの関数
1 time.altzone

ローカルDSTタイムゾーンのオフセット(UTCの西の秒数)(定義されている場合)。ローカルDSTタイムゾーンがUTCの東にある場合(英国を含む西ヨーロッパの場合など)、これはマイナスになります。日光がゼロ以外の場合にのみこれを使用してください。

2 time.asctime([tupletime])

タイムタプルを受け入れ、「Tue Dec 1118:07:142008」などの読み取り可能な24文字の文字列を返します。

3 時計( )

現在のCPU時間を浮動小数点の秒数として返します。さまざまなアプローチの計算コストを測定するには、time.clockの値がtime.time()の値よりも便利です。

4 time.ctime([secs])

asctime(localtime(secs))のように、引数なしはasctime()のようになります

5 time.gmtime([secs])

エポックからの秒数で表されるインスタントを受け入れ、UTC時刻を含むタイムタプルtを返します。注:t.tm_isdstは常に0です

6 time.localtime([secs])

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

7 time.mktime(tupletime)

現地時間のタイムタプルとして表されるインスタントを受け入れ、エポックからの秒数で表されるインスタントを含む浮動小数点値を返します。

8 time.sleep(secs)

呼び出し元のスレッドをsecs秒間中断します。

9 time.strftime(fmt [、tupletime])

現地時間のタイムタプルとして表されるインスタントを受け入れ、文字列fmtで指定されたインスタントを表す文字列を返します。

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

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

11 time.time()

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

12 time.tzset()

ライブラリルーチンで使用される時間変換ルールをリセットします。環境変数TZは、これがどのように行われるかを指定します。

関数を簡単に見てみましょう-

時間モジュールで使用できる次の2つの重要な属性があります-

シニア番号 説明付きの属性
1

time.timezone

属性time.timezoneは、UTCからのローカルタイムゾーン(DSTなし)の秒単位のオフセットです(南北アメリカでは> 0、ヨーロッパ、アジア、アフリカのほとんどでは<= 0)。

2

time.tzname

属性time.tznameは、ロケールに依存する文字列のペアです。これらは、それぞれDSTがない場合とある場合のローカルタイムゾーンの名前です。

カレンダーモジュール

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

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

カレンダーモジュールで利用できる機能のリストは次のとおりです-

シニア番号 説明付きの関数
1

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

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

2

calendar.firstweekday( )

毎週開始する平日の現在の設定を返します。デフォルトでは、カレンダーが最初にインポートされるとき、これは0であり、月曜日を意味します。

3

calendar.isleap(year)

年がうるう年の場合はTrueを返します。それ以外の場合はFalse。

4

calendar.leapdays(y1,y2)

range(y1、y2)内の年の飛躍日数の合計を返します。

5

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

年の月月のカレンダー、週に1行、および2つのヘッダー行を含む複数行の文字列を返します。wは、各日付の文字幅です。各行の長さは7 * w +6です。lは各週の行数です。

6

calendar.monthcalendar(year,month)

intのリストのリストを返します。各サブリストは週を示します。年月の月以外の日は0に設定されます。月内の日は、月の1日以上に設定されます。

7

calendar.monthrange(year,month)

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

8

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

印刷calendar.calendar(year、w、l、c)のように。

9

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

印刷calendar.month(year、month、w、l)のように。

10

calendar.setfirstweekday(weekday)

毎週の最初の日を平日コード平日に設定します。平日のコードは0(月曜日)から6(日曜日)です。

11

calendar.timegm(tupletime)

time.gmtimeの逆数:時刻タプル形式の時刻を受け入れ、エポックからの浮動小数点の秒数と同じ時刻を返します。

12

calendar.weekday(year,month,day)

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

その他のモジュールと機能

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

  • 日時モジュール

  • pytzのモジュール

  • dateutilモジュール