【13日目】Pythonにおける時間に関するモジュール

4133 ワード

5.2
1.timeパッケージ
コンピュータは時間を計ることができて、ハードウェアの上から言えば、コンピュータのマザーボードの上で1つの時間を計る時計があって私達は手動あるいはネットの時間によって時計を調整することができて、この時計は自分の電池があるのでたとえ電気が切れても、時計は止まることはできなくて、ハードウェアの基礎の上でコンピュータは時計を掛ける時間(Wall Clock Time)を提供することができて時計を掛ける時間はある一定の時間の起点から今までの時間の間隔はUNIXシステムにとって、開始時刻は1970年1月1日0時0分0秒その他の日時はすべて時計掛け時間から計算したものであり、またコンピュータはCPUの実際の稼働時間を測定することができ、プロセッサ時間(Processor Clock Time)についてコンピュータの性能を測定することができ、CPUがアイドル状態にある場合、プロセッサ時間は一時停止する
pyプログラミングで時間と日付を管理できます.標準ライブラリtimeパッケージでは、基本的な時間機能を提供します.次にtimeパッケージを使用します.
import time
print(time.time())     #    ,    

モジュールtimeを使用して、プログラムの実行時間を測定することもできます.たとえば、次のようにします.
import time
start = time.clock()
for i in range(100000):
    print(i**2)
end = time.clock()
print(end - start)       #  19.904038, CPU    

上記のプログラムは、2回のclock()メソッドを呼び出し、その間に埋め込まれたプログラムを測定するのにかかる時間が異なるコンピュータシステムではclock()の戻り値が異なり、UNIXシステムではプロセッサ時間が返され、CPUがアイドル状態にある場合はプロセッサ時間が一時停止するため、CPU実行時間が得られ、windowsシステムでは時計掛け時間が返される
メソッドsleep()はプログラムをスリープさせることができ、sleep()によって受け入れられたパラメータプログラムはある時間間隔後に目が覚めて実行を継続します.
import time
print("start")
time.sleep(10)     #  10 
print("wake up")

timeパッケージはstruct_も定義していますtimeオブジェクト、掛け時計の時間を年、月、日、時、分、秒などに変換して、そのオブジェクトの各属性に格納します.例えば、tm_year,tm_mon,tm_mday...... 次の方法では、時計をstruct_に変換できます.timeオブジェクト:
st = time.gmtime()           #  struct_time   UTC  

st = time.localtime()        #  struct_time       ,            

逆にstructをtimeオブジェクトをtimeオブジェクトに変換するには、次の手順に従います.
s = time.mktime(st)          # struct_time         

2.datetimeパッケージ
datetimeパッケージはtimeパッケージに基づく高級パッケージであり、使い勝手がより便利であるdatetimeは、dateとtimeの2つの部分がdateを構成する年月日からなる日付であり、カレンダーに相当し、timeは時分秒ミリ秒からなる1日24時間の具体的な時間を指し、時計と同様の機能を提供するため、datetimeモジュールの下には2つのクラスがある.dateクラスとdatetime.timeクラスはカレンダーと時計を合わせて使用することもできます.datetimeを直接呼び出すことができます.datetimeクラスここでは総合的なdatetimeのみを紹介する.datetimeクラス、個別のdatetime.dateクラスとdatetime.timeクラスと類似
2012年9月3日21時30分などの時点では、次のように表現できます.
import datetime

t = datetime.datetime(2012,9,3,21,30)
print(t)
2012-09-03 21:30:00

オブジェクトtには、hour、minute、second、millisecond、microsecond時間、分、秒、ミリ秒、マイクロ秒year、month、day、weekday年、月、日、曜日のプロパティがあります.
datetimeパケットにより、時間間隔の演算を行うこともできます.それは、時間間隔オブジェクトを表すクラス、すなわちtimedelta、datetimeを含む.Datetimeの時点に1つの時間間隔を加えると、今日の午前3時に5時間を加えると1つの時間間隔が得られます.
import datetime

t = datetime.datetime(2012,9,3,21,30)
t_next = datetime.datetime(2012,9,5,23,30)
delta1 = datetime.timedelta(seconds = 600)
delta2 = datetime.timedelta(weeks = 3)

print(t + delta1)        #  2012-09-03 21:40:00
print(t + delta2)        #  2012-09-24 21:30:00
print(t_next - t)        #  2 days, 2:00:00

datetimeにtimedeltaがパラメータを渡す場合、上の秒(seconds)と曜日(weeks)のほかに、日(days)、時間(hours)、ミリ秒(milliseconds)マイクロ秒(microseconds)
2つのdatetimeオブジェクトが比較演算を行い、使用するtおよびt_のような時間間隔がより長いかを決定する.next:
print(t>t_next)          #  False

3.時間書式
時間情報を含む文字列では、datetimeパッケージを使用してdatetimeクラスのオブジェクトに変換できます.たとえば、次のようになります.
from datetime import datetime

str = "output-1997-12-23-030000.txt"
format = "output-%Y-%m-%d-%H%M%S.txt"
t = datetime.strptime(str,format)
print(t)                 #  1997-12-23 03:00:00

時間情報を含む文字列は「output-1997-12-23-30000.txt」というファイル名で、文字列formatは1つのフォーマットを定義しています.このフォーマットには、異なる時間情報%Yが年を表し、%mが月を表し、%dが日を表し、%Hが24時間制の時間を表し、%Mが分を表し、%Sが秒をstrptimeメソッドで表し、pyは解析が必要な文字列をフォーマットに集約します.例えば、フォーマット中の%Yの位置で、ちょうど「1997」が見られると、1997がdatetimeオブジェクトtの年であると考えられ、このようにして文字列からtオブジェクトの時間情報が得られる
逆に、datetimeオブジェクトのstrftimeメソッドを呼び出して、datetimeオブジェクトを特定のフォーマットの文字列に変換することもできます.たとえば、次のようにします.
from datetime import datetime

format = "%Y-%m-%d %H:%M"
t = datetime(2012,9,5,23,30)
print(t.strftime(format))     #  2012-09-05 23:30

フォーマット変換の鍵は、%番号がリードする特殊記号です.これらの特殊記号には、異なる時間情報を表し、よく使われる特殊記号があります.
%A:        , Sunday,Monday...
%a:        , Sun,Mon...
%I:    ,12   
%p:      , AM PM
%f:    , 2,0014,000001

ただし、特殊な記号ではなく%という文字自体をフォーマットで表現するには%%を使用します.