Pythonクックブック(3章)
日付の続き、今日はdatetimeモジュール*1。明日はdateutilモジュールを使ってみる。
datetimeモジュール
基本的な日付型および時間型を扱うためのモジュール。
次の5つのクラスが属している
datetime |- class timedelta : time/date/datetimeクラスの2つのインスタンスの差分を表す |- class tzinfo : タイムゾーン情報の抽象基底クラス(必ず派生クラスを作成して使う) |- class time : ローカルの時間(時,分,秒,マイクロ秒,タイムゾーン)を表す |- class date : 日付(年,月,日)を表す |- class datetime : dateクラスとtimeクラスの全情報を表す
昨日、今日、明日
>>> import datetime >>> today = datetime.date.today() >>> yesterday = today - datetime.timedelta(days=1) >>> tomorrow = today + datetime.timedelta(days=1) >>> yesterday, today, tomorrow (datetime.date(2011, 6, 27), datetime.date(2011, 6, 28), datetime.date(2011, 6, 29)) >>> print yesterday, today, tomorrow 2011-06-27 2011-06-28 2011-06-29 >>>
1日前、現時点、1日後
>>> now = datetime.datetime.now() >>> one_day_before = now - datetime.timedelta(days=1) >>> one_day_after = now + datetime.timedelta(days=1) >>> one_day_before, now, one_day_after (datetime.datetime(2011, 6, 27, 0, 20, 17, 854036), datetime.datetime(2011, 6, 28, 0, 20, 17, 854036), datetime.datetime(2011, 6, 29, 0, 20, 17, 854036)) >>> print one_day_before, now, one_day_after 2011-06-27 00:20:17.854036 2011-06-28 00:20:17.854036 2011-06-29 00:20:17.854036 >>>
月始め、今日、月末
月毎の最終日は、calendar.monthrange(year, month) -> [月始めの曜日、月末の日にち] から。
>>> import calendar >>> import datetime >>> today = datetime.date.today() >>> calendar.monthrange(today.year, today.month) (2, 30) >>> first_day = today.replace(day=1) >>> last_day = today.replace(day=calendar.monthrange(today.year, today.month)[1]) >>> first_day, today, last_day (datetime.date(2011, 6, 1), datetime.date(2011, 6, 28), datetime.date(2011, 6, 30)) >>> print first_day, today, last_day 2011-06-01 2011-06-28 2011-06-30 >>>
その他
組込み関数sumの第一引数には、ジェネレータを指定することが出来る。
大量のデータを扱う場合は、メモリの節約になる(はず)
[kobakoba0723@fedora13-intel64 ~]$ cat sumgenerator.py print sum((x * x for x in range(10))) [kobakoba0723@fedora13-intel64 ~]$ python -m pdb sumgenerator.py > /home/kobakoba0723/sumgenerator.py(1)<module>() -> print sum((x*x for x in range(10))) (Pdb) s --Call-- > /home/kobakoba0723/sumgenerator.py(1)<genexpr>() -> print sum((x*x for x in range(10))) (Pdb) > /home/kobakoba0723/sumgenerator.py(1)<genexpr>() -> print sum((x*x for x in range(10))) (Pdb) --Return-- > /home/kobakoba0723/sumgenerator.py(1)<genexpr>()->0 -> print sum((x*x for x in range(10))) (Pdb) --Call-- > /home/kobakoba0723/sumgenerator.py(1)<genexpr>()->0 -> print sum((x*x for x in range(10))) (Pdb) > /home/kobakoba0723/sumgenerator.py(1)<genexpr>()->0 -> print sum((x*x for x in range(10))) (Pdb)
参考サイト
モジュールインデックス@Python 2.6.2 document
標準ライブラリ@Python 2.6.2 document
Pythonでの日付関連処理@Groove Labo
- 作者: Alex Martelli,Anna Martelli Ravenscroft,David Ascher,鴨澤眞夫,當山仁健,吉田聡,吉宗貞紀
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/06/26
- メディア: 大型本
- 購入: 11人 クリック: 423回
- この商品を含むブログ (85件) を見る
*1:ところどころでcalendarモジュールも使ってる