Python標準ライブラリ学習ノート4:日付と時間
9175 ワード
1.time---時計時間
役割:クロック時間を管理する関数
Pythonバージョン:1.4以降
timeモジュールは、日付と時間を管理するためのCライブラリ関数を提供する.
1.時計の時間
timeモジュールのコア関数の1つはtime()であり、紀元開始以来の秒数を浮動小数点値として返す.
2.プロセッサクロック時間
clock()は、プロセッサのクロック時間を返す、通常、性能試験、基準試験等に用いられる.プログラムが何もしていない場合(sleep関数を呼び出すなど)、clockは時間を増加しません.
備考:テストの結果に影響がある(本に間違いがあるかもしれない!)
3.時間構成
年、月、日、時、分、秒など、具体的な時間を使う必要があります.timeモジュールはstruct_を定義しますtimeは、日付と時刻の値を維持します.
4.タイムゾーンの処理
タイムゾーンを変更するには、環境変数TZを設定し、tzset()を呼び出す必要がある.
備考:Python 2.7中timeモジュールにtzset()メソッドがありません!
5.解析とフォーマットの時間
strptime()とstrftime()をstruct_で使用できます.timeと時間値文字列表現の変換:
2.datetime---日付と時刻値管理
役割:datetimeモジュールには、日付と時間の解析、フォーマット、算術演算を完了するための関数とクラスが含まれています.
Pythonバージョン:2.3以降
1.時間
時間値はtimeクラスで表す.timeインスタンスには、hour、minute、second、microsecondプロパティが含まれます.タイムゾーン情報も含まれます.
2.日付
カレンダーの日付値はdateクラスで表す.dateインスタンスにはyear,month,day属性が含まれる.today()クラスメソッドを使用すると、現在の日付を表す日付インスタンスを簡単に作成できます.
3. timedelta
2つのdatetimeオブジェクトに対して算術演算を用いるか、1つのdatetimeと1つのtimedeltaを組み合わせて将来と過去の日付を算出することができる.
4.日付算術演算
日付算術要素は、標準算術オペレータを使用して実行されます.
5.比較値
日付と時刻の値を比較するには、標準比較オペレータを使用します.
6.日付と時刻の結合
datetimeクラスを用いる、日付と時間の成分からなる値を記憶することができる.
7.フォーマットと解析
strftime()を使用して時間をフォーマットできます.
3.calendar---処理日
役割:calendarモジュールは、日付を処理し、年、月、週の値を管理するクラスを実現しています.
1.フォーマットの例
prmonth()法は簡単な関数であり、1ヶ月のフォーマットテキスト出力を生成することができる.
役割:クロック時間を管理する関数
Pythonバージョン:1.4以降
timeモジュールは、日付と時間を管理するためのCライブラリ関数を提供する.
1.時計の時間
timeモジュールのコア関数の1つはtime()であり、紀元開始以来の秒数を浮動小数点値として返す.
>>> import time
>>> time.time()
1425368942.161
浮動小数点数は日付を格納または比較するのに役立ちますが、ctimeは記録または印刷時間に適しています.>>> time.ctime()
'Tue Mar 03 15:50:15 2015'
>>> time.ctime(time.time() + 15)
'Tue Mar 03 15:51:03 2015'
2.プロセッサクロック時間
clock()は、プロセッサのクロック時間を返す、通常、性能試験、基準試験等に用いられる.プログラムが何もしていない場合(sleep関数を呼び出すなど)、clockは時間を増加しません.
備考:テストの結果に影響がある(本に間違いがあるかもしれない!)
import time
for i in range(5):
#a = range(10000)
print '%s %0.2f %0.2f' % (time.ctime(),
time.time(),
time.clock())
time.sleep(2) #sleep 2s
インタプリタは次のように表示されます.>>>
Tue Mar 03 15:59:30 2015 1425369570.85 0.00
Tue Mar 03 15:59:32 2015 1425369572.85 2.00
Tue Mar 03 15:59:34 2015 1425369574.85 4.00
Tue Mar 03 15:59:36 2015 1425369576.85 6.00
Tue Mar 03 15:59:38 2015 1425369578.86 8.02
3.時間構成
年、月、日、時、分、秒など、具体的な時間を使う必要があります.timeモジュールはstruct_を定義しますtimeは、日付と時刻の値を維持します.
import time
def show_struct(s):
print 'tm_year:', s.tm_year
print 'tm_mon:', s.tm_mon
print 'tm_mday:', s.tm_mday
print 'tm_hour:', s.tm_hour
print 'tm_min:', s.tm_min
print 'tm_sec:', s.tm_sec
print 'tm_wday:', s.tm_wday
print 'tm_yday:', s.tm_yday
print 'tm_isdst:', s.tm_isdst
print 'gmtime:'
show_struct(time.gmtime())
print '
localtime:'
show_struct(time.localtime())
print '
mktime:', time.mktime(time.localtime())
インタプリタは次のように表示されます.>>>
gmtime:
tm_year: 2015
tm_mon: 3
tm_mday: 3
tm_hour: 8
tm_min: 4
tm_sec: 54
tm_wday: 1
tm_yday: 62
tm_isdst: 0
localtime:
tm_year: 2015
tm_mon: 3
tm_mday: 3
tm_hour: 16
tm_min: 4
tm_sec: 54
tm_wday: 1
tm_yday: 62
tm_isdst: 0
mktime: 1425369894.0
4.タイムゾーンの処理
タイムゾーンを変更するには、環境変数TZを設定し、tzset()を呼び出す必要がある.
備考:Python 2.7中timeモジュールにtzset()メソッドがありません!
5.解析とフォーマットの時間
strptime()とstrftime()をstruct_で使用できます.timeと時間値文字列表現の変換:
import time
def show_struct(s):
print 'tm_year:', s.tm_year
print 'tm_mon:', s.tm_mon
print 'tm_mday:', s.tm_mday
print 'tm_hour:', s.tm_hour
print 'tm_min:', s.tm_min
print 'tm_sec:', s.tm_sec
print 'tm_wday:', s.tm_wday
print 'tm_yday:', s.tm_yday
print 'tm_isdst:', s.tm_isdst
now = time.ctime()
print 'Now:', now
parsed = time.strptime(now)
print '
Parsed:'
show_struct(parsed)
print '
Formatted:', time.strftime("%a %b %d %H:%M:%S %Y", parsed)
インタプリタは次のように表示されます.>>>
Now: Tue Mar 03 16:16:42 2015
Parsed:
tm_year: 2015
tm_mon: 3
tm_mday: 3
tm_hour: 16
tm_min: 16
tm_sec: 42
tm_wday: 1
tm_yday: 62
tm_isdst: -1
Formatted: Tue Mar 03 16:16:42 2015
2.datetime---日付と時刻値管理
役割:datetimeモジュールには、日付と時間の解析、フォーマット、算術演算を完了するための関数とクラスが含まれています.
Pythonバージョン:2.3以降
1.時間
時間値はtimeクラスで表す.timeインスタンスには、hour、minute、second、microsecondプロパティが含まれます.タイムゾーン情報も含まれます.
>>> import datetime
>>> t = datetime.time(1, 2, 3)
>>> t.hour
1
>>> t.minute
2
>>> t.second
3
>>> t.microsecond
0
>>> t.tzinfo
>>> datetime.time.min
datetime.time(0, 0)
>>> datetime.time.max
datetime.time(23, 59, 59, 999999)
>>> datetime.time.resolution
datetime.timedelta(0, 0, 1)
2.日付
カレンダーの日付値はdateクラスで表す.dateインスタンスにはyear,month,day属性が含まれる.today()クラスメソッドを使用すると、現在の日付を表す日付インスタンスを簡単に作成できます.
import datetime
today = datetime.date.today()
print today
print 'ctime:', today.ctime()
tt = today.timetuple()
print 'tm_year:', tt.tm_year
print 'tm_mon:', tt.tm_mon
print 'tm_mday:', tt.tm_mday
print 'tm_hour:', tt.tm_hour
print 'tm_min:', tt.tm_min
print 'tm_sec:', tt.tm_sec
print 'tm_wday:', tt.tm_wday
print 'tm_yday:', tt.tm_yday
print 'tm_isdst:', tt.tm_isdst
print 'ordinal:', today.toordinal()
print 'Year:', today.year
print 'Mon:', today.month
print 'Day:', today.day
インタプリタは次のように表示されます.>>>
2015-03-04
ctime: Wed Mar 4 00:00:00 2015
tm_year: 2015
tm_mon: 3
tm_mday: 4
tm_hour: 0
tm_min: 0
tm_sec: 0
tm_wday: 2
tm_yday: 63
tm_isdst: -1
ordinal: 735661
Year: 2015
Mon: 3
Day: 4
minプロパティとmaxプロパティを使用して、サポートされている日付値の範囲を決定できます.import datetime
print 'Earliest :', datetime.date.min
print 'Latest :', datetime.date.max
print 'Resolution:', datetime.date.resolution
インタプリタは次のように表示されます.>>>
Earliest : 0001-01-01
Latest : 9999-12-31
Resolution: 1 day, 0:00:00
新しいdateインスタンスを作成するには、既存のdateのreplace()メソッドを使用して作成する方法もあります.import datetime
d1 = datetime.date(2008, 3, 29)
print 'd1:', d1.ctime()
d2 = d1.replace(year = 2009)
print 'd2:', d2.ctime()
インタプリタは次のように表示されます.>>>
d1: Sat Mar 29 00:00:00 2008
d2: Sun Mar 29 00:00:00 2009
3. timedelta
2つのdatetimeオブジェクトに対して算術演算を用いるか、1つのdatetimeと1つのtimedeltaを組み合わせて将来と過去の日付を算出することができる.
import datetime
for delta in [datetime.timedelta(microseconds=1),
datetime.timedelta(milliseconds=1),
datetime.timedelta(seconds=1),
datetime.timedelta(minutes=1),
datetime.timedelta(hours=1),
datetime.timedelta(days=1),
datetime.timedelta(weeks=1),]:
print '%15s = %s seconds' % (delta, delta.total_seconds())
インタプリタは次のように表示されます.>>>
0:00:00.000001 = 1e-06 seconds
0:00:00.001000 = 0.001 seconds
0:00:01 = 1.0 seconds
0:01:00 = 60.0 seconds
1:00:00 = 3600.0 seconds
1 day, 0:00:00 = 86400.0 seconds
7 days, 0:00:00 = 604800.0 seconds
4.日付算術演算
日付算術要素は、標準算術オペレータを使用して実行されます.
import datetime
today = datetime.date.today()
print 'Today :', today
one_day = datetime.timedelta(days=1)
print 'one day:', one_day
yesterday = today - one_day
print 'Yesterday:', yesterday
tomorrow = today + one_day
print 'tomorrow:', tomorrow
print
print 'tomorrow - yesterday:', tomorrow - yesterday
print 'yesterday - tomorrow:', yesterday - tomorrow
インタプリタは次のように表示されます.>>>
Today : 2015-03-04
one day: 1 day, 0:00:00
Yesterday: 2015-03-03
tomorrow: 2015-03-05
tomorrow - yesterday: 2 days, 0:00:00
yesterday - tomorrow: -2 days, 0:00:00
5.比較値
日付と時刻の値を比較するには、標準比較オペレータを使用します.
>>> import datetime
>>> import time
>>> t1 = datetime.time(12, 55, 0)
>>> t2 = datetime.time(13, 5, 0)
>>> t1 < t2
True
>>> d1 = datetime.date.today()
>>> d2 = datetime.date.today() + datetime.timedelta(days=1)
>>> d1, d2
(datetime.date(2015, 3, 4), datetime.date(2015, 3, 5))
>>> d1 < d2
True
6.日付と時刻の結合
datetimeクラスを用いる、日付と時間の成分からなる値を記憶することができる.
import datetime
print 'Now:', datetime.datetime.now()
print 'Today:', datetime.datetime.today()
print 'UTC Now:', datetime.datetime.utcnow()
print
FIELDS = ['year', 'month', 'day',
'hour', 'minute', 'second', 'microsecond',
]
d = datetime.datetime.now()
for attr in FIELDS:
print '%15s: %s' % (attr, getattr(d, attr))
インタプリタは次のように表示されます.>>>
Now: 2015-03-04 09:43:17.765000
Today: 2015-03-04 09:43:17.796000
UTC Now: 2015-03-04 01:43:17.812000
year: 2015
month: 3
day: 4
hour: 9
minute: 43
second: 17
microsecond: 812000
7.フォーマットと解析
strftime()を使用して時間をフォーマットできます.
import datetime
format = '%a %b %d %H:%M:%S %Y'
today = datetime.datetime.today()
print 'ISO :', today
s = today.strftime(format)
print 'strftime:', s
d = datetime.datetime.strptime(s, format)
print 'strptime:', d.strftime(format)
インタプリタは次のように表示されます.>>>
ISO : 2015-03-04 09:47:22.214000
strftime: Wed Mar 04 09:47:22 2015
strptime: Wed Mar 04 09:47:22 2015
3.calendar---処理日
役割:calendarモジュールは、日付を処理し、年、月、週の値を管理するクラスを実現しています.
1.フォーマットの例
prmonth()法は簡単な関数であり、1ヶ月のフォーマットテキスト出力を生成することができる.
>>> import calendar
>>> c = calendar.TextCalendar(calendar.SUNDAY)
>>> c.prmonth(2015, 3)
March 2015
Su Mo Tu We Th Fr Sa
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