The Dabsong Conshirtoe

技術系の話を主にします。

pythonの日時系操作まとめ

プログラミングをしていれば、日時系の操作をする機会ってかなり多いですよね?
何日前を計算したり、文字列を日時オブジェクトにしたりその逆をしたり、曜日や月末日が欲しかったり。

自分が忘れっぽいのか、この辺の操作はすぐ忘れてしまい何度もググってしまうので、自戒の念も込めてまとめておきます。
バージョンは2.6。

datetimeの加算減算

# 現在日時から1日進める
datetime.datetime.now() + datetime.timedelta(1)

# 現在日時から1時間戻す
datetime.datetime.now() - datetime.timedelta(hours = 1)

dateをdatetimeに変換

d = datetime.date.today(2012, 12, 12)
t = datetime.time(12, 12, 12)
datetime.datetime.combine(d, t)

datetimeをdateに変換

dt = datetime.datetime.now()
dt.date()

エポックからの経過秒数をdatetime(ローカル)に変換

utc = time.time()
datetime.datetime.fromtimestamp(utc)

datetimeをエポックからの経過秒数に変換

now = datetime.datetime.now()
timetuple = datetime.datetime.timetuple(now)
int(time.mktime(timetuple))

月末日を求める

youbi, end_of_month = calendar.monthrange(year, month)
datetime.date(year, month, end_of_month)

日付が属する曜日を求める

# ※曜日を表す数値はcalendarの定数として定められている(calendar.SUNDAYなど)
datetime.date.today().weekday()

日付が属する週の初日を求める

# 週の初日を日曜日と仮定
d = datetime.date.today()
weekday = d.weekday()
if weekday == calendar.SUNDAY:
    return d
else:
    delta = datetime.timedelta(7 - (calendar.SUNDAY - weekday))
    return d - delta


とりあえずこの辺で。