この記事では、Python の組み込み時間モジュールの使用法について詳しく説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
1. はじめに
時間モジュールは、動作時間に関するさまざまな関数を提供します
注: 時間を表現するには一般に 2 つの方法があります:
1 つ目はタイムスタンプ方式 (1970.1.1 00:00:00 を基準とした秒単位のオフセット) で、タイムスタンプは一意です
2 番目のものは、合計 9 つの要素を持つ配列 (struct_time) の形式で表され、同じタイムスタンプの struct_time がタイム ゾーンの違いにより異なることを示します
年 (4 桁、例: 1998)
月 (1-12)
日 (1-31)
時間 (0-23)
分 (0-59)
秒 (0-59)
平日(0~6、月曜は0)
ユリウス日 (年間の日、1 ~ 366)
DST (夏時間) フラグ (-1、0、または 1) 夏時間であるかどうか
DST フラグが 0 の場合、時間は通常のタイムゾーンで与えられます。
1 の場合、時刻は DST タイムゾーンで指定されます。
-1 の場合、mktime() は日付と時刻に基づいて推測する必要があります。
2. 機能紹介
1.asctime()
asctime([タプル]) -> 文字列
struct_time (デフォルトは現在時刻) を文字列
に変換します。
時刻タプルを文字列に変換します (例: 'Sat Jun 06 16:26:11 1998')。
時刻タプルが存在しない場合、localtime()
によって返される現在時刻
が使用されます。
2.クロック()
クロック() -> 浮動小数点数
この関数には 2 つの関数があります。
初めて呼び出されたときに返されるのは、プログラムが実行されている実際の時間です。
2 回目以降の呼び出しでは、最初の呼び出しから今回の呼び出しまでの時間間隔が返されます
import time if __name__ == '__main__': time.sleep(1) print "clock1:%s" % time.clock() time.sleep(1) print "clock2:%s" % time.clock() time.sleep(1) print "clock3:%s" % time.clock()
clock1:3.35238137808e-006 clock2:1.00004944763 clock3:2.00012040636
2番目と3番目のクロック出力は、最初のクロックからの時間間隔です
3.睡眠(...)
テスト後、スレッドの実行が一定時間遅延します。単位は秒ですが、ヘルプドキュメントに次のような分かりにくい文章があります
「引数は 1 秒未満の精度の浮動小数点数にすることができます。」
4.ctime(...)
ctime(秒) -> 文字列
タイムスタンプ (デフォルトは現在時刻) を時刻文字列
に変換します。
例:
time.ctime()
出力は次のようになります: 'Sat Mar 28 22:24:24 2009'
5.gmtime(...)
タイムスタンプを UTC タイムゾーン (0 タイムゾーン) の struct_time に変換します。秒パラメーターが入力されていない場合は、現在時刻が変換基準として使用されます。
6.localtime(...)
localtime([秒]) -> (tm_year,tm_mon,tm_day,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)タイムスタンプを現在のタイムゾーンの struct_time に変換します。秒パラメーターが入力されていない場合は、現在の時間が変換標準として使用されます。
7.mktime(...)
mktime(タプル) -> 浮動小数点数
struct_time をタイムスタンプに変換
8.strftime(...)
指定された形式文字列
に従って、指定された struct_time (デフォルトは現在時刻) を出力します。
Python の時刻と日付の書式設定記号:
%y 2 桁の年表現 (00 ~ 99)
%Y は 4 桁の年 (000 ~ 9999) を表します
%m 月 (01-12)
%d 日 (0 ~ 31)
%H 24 時間形式の時間番号 (0 ~ 23)
%I 12 時間制 (01-12)
%M 分 (00=59)
%S 秒 (00-59)
%ローカルの完全な週名
%b ローカルの簡略化された月の名前
%B ローカルの完全な月名
%c ローカルに対応する日付表現と時刻表現
%j 年間の日 (001-366)
%p 現地の午前または午後に相当
%U 年の週数 (00-53) 日曜日が週の始まりです
%w 週 (0-6)、日曜日が週の始まりです
%W 年の週数 (00-53) 月曜日が週の始まりです
%x ローカルの対応する日付表現
%X ローカル対応時間表現
%Z 現在のタイムゾーンの名前
%% %数値自体
9.strptime(...)
指定されたフォーマッタに基づいて時刻文字列を時刻の配列に変換します
例:
2009-03-20 11:45:39 対応する形式文字列は次のとおりです: %Y-%m-%d %H:%M:%S
Sat Mar 28 22:24:24 2009 対応する形式文字列は次のとおりです: %a %b %d %H:%M:%S %Y
10.time(...)
time() -> floating point number
返回当前时间的时间戳
三、疑点
1.夏令时
在struct_time中,夏令时好像没有用,例如
a = (2009, 6, 28, 23, 8, 34, 5, 87, 1)
b = (2009, 6, 28, 23, 8, 34, 5, 87, 0)
a和b分别表示的是夏令时和标准时间,它们之间转换为时间戳应该相关3600,但是转换后输出都为646585714.0
四、小应用
1.python获取当前时间
time.time() 获取当前时间戳
time.localtime() 当前时间的struct_time形式
time.ctime() 当前时间的字符串形式
2.python格式化字符串
格式化成2009-03-20 11:45:39形式
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
格式化成Sat Mar 28 22:24:24 2009形式
time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
3.将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2009" b = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
相信本文所述对大家的Python程序设计有一定的借鉴价值。