Contents
Pythonの日付と時刻
Pythonプログラムは、いくつかの方法で日付と時刻を処理できます。日付形式を変換することは、コンピュータの一般的な業務と言っていいでしょう。Pythonの時間とカレンダーモジュールは日付と時刻を調べるのに役立ちます。
時間間隔は、秒単位の浮動小数点数です。特定の瞬間は、1970年1月1日(紀元)の午前12時から秒単位で表されます。
時間を扱い、表現間を変換するための関数を提供する、Pythonで利用可能な一般的な時間モジュールがあります。関数time.time()は、1970年1月1日午前12時(エポック)以来の現在のシステム時刻をティックで返します。
例
#!/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
日付の計算はダニで簡単に実行できます。ただし、エポック以前の日付はこの形式では表現できません。遠い将来の日付もこのように表現することはできません.2038年には、UNIXとWindowsの場合は間もないです。
TimeTupleとは何ですか?
Pythonの時間関数の多くは、時間を以下のように9個の数値のタプルとして扱います。
インデックス | フィールド | 値 |
---|---|---|
0 | 4桁の年 | 2008年 |
1 | 月 | 1~12 |
2 | 日 | 1~31 |
3 | 時間 | 0〜23 |
4 | 分 | 0〜59 |
5 | 二番 | 0〜61(60または61はうるう秒) |
6 | 曜日 | 0〜6(0は月曜日) |
7 | 1日 | 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
時間モジュール
時間を扱い、表現間を変換するための関数を提供する、Pythonで利用可能な普及した時間モジュールがあります。利用可能なすべてのメソッドのリストです
SN | 説明付きの関数 |
---|---|
1 | time.altzone
1つが定義されている場合、UTCの西から西にあるローカルDSTタイムゾーンのオフセットです。これは、ローカルのDSTタイムゾーンがUTCの東(西ヨーロッパなど、英国を含む)である場合は負です。昼光がゼロ以外の場合にのみ、これを使用してください。 |
2 | time.asctime([tupletime])
タイムタプルを受け入れ、 ‘Tue Dec 11 18:07:14 2008’のような読みやすい24文字の文字列を返します。 |
3 | time clock( )
現在のCPU時間を浮動小数点数(秒)で返します。異なるアプローチの計算コストを測定するために、time.clockの値はtime.time()の値よりも有用です。 |
4 | time.ctime([秒])
asctime(localtime(secs))や引数なしの場合と同じようにasctime() |
5 | time.gmtime([秒])
エポックから秒単位で表された瞬間を受け入れ、UTC時間でタイムタプルtを返します。注:t.tm_isdstは常に0です。 |
6 | time.localtime([秒])
エポックから秒単位で表された瞬間を受け入れ、ローカルタイムでタイムタプルtを返します(ローカルルールによってDSTがインスタント秒に適用されるかどうかによって、t.tm_isdstは0または1です)。 |
7 | time.mktime(tupletime)
現地時間でタイムタプルとして表現された瞬間を受け入れ、エポックから秒単位で表現された瞬時値で浮動小数点値を返します。 |
8 | time.sleep(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つの重要な属性があります。
SN | 説明付きの属性 |
---|---|
1 | time.timezone属性time.timezoneは、UTC(アメリカ大陸では> 0、ほとんどのヨーロッパ、アジア、アフリカでは0以下)からのローカルタイムゾーン(DSTなし)の秒単位のオフセットです。 |
2 | time.tzname属性time.tznameは、ロケールに依存する文字列のペアです。これは、それぞれDSTがないDSTのローカルタイムゾーンの名前です。 |
カレンダーモジュール
カレンダーモジュールは、特定の月または年のテキストカレンダーを印刷する機能を含むカレンダー関連の機能を提供します。
デフォルトでは、カレンダーは月曜日を週の最初の日とし、日曜日を最後の日とします。これを変更するには、calendar.setfirstweekday()関数を呼び出します。
カレンダーモジュールで使用可能な関数のリストを次に示します。
SN | 説明付きの関数 |
---|---|
1 | calendar.calendar(年、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)範囲(y1、y2)内の年のうるう年の総数を返します。 |
5 | calendar.month(年、月、w = 2、l = 1)年の月の月、週に1行、2つのヘッダ行のカレンダを持つ複数行の文字列を返します。wは各日付の文字幅です。各行の長さは7 * w + 6です。lは毎週の行数です。 |
6 | calendar.monthcalendar(年、月)intのリストのリストを返します。各サブリストは週を表します。月の年の外の日は0に設定されます。その月の日数は、その日の1日以上に設定されます。 |
7 | calendar.monthrange(年、月)2つの整数を返します。最初のものは、年の月の最初の日の曜日のコードです。2番目は月の日数です。平日コードは0(月曜日)〜6(日曜日)です。月の数字は1〜12です。 |
8 | calendar.prcal(年、w = 2、l = 1、c = 6)print calendar.calendar(year、w、l、c)と同様です。 |
9 | calendar.prmonth(年、月、w = 2、l = 1)印刷calendar.month(年、月、週、週)のように。 |
10 | calendar.setfirstweekday(平日)各週の最初の日を平日のコード平日に設定します。平日コードは0(月曜日)〜6(日曜日)です。 |
11 | calendar.timegm(tupletime)time.gmtime:の逆はtime-tuple形式の時刻を受け取り、エポックからの浮動小数点数と同じ瞬間を返します。 |
12 | calendar.weekday(年、月、日)指定された日付の曜日コードを返します。平日コードは0(月曜日)〜6(日曜日)です。月の数字は1(1月)〜12(12月)です。 |
次のページ⑮