Python datetime 常用方法統整
Posted on Sep 8, 2016 in Python 程式設計 - 初階 by Amo Chen ‐ 1 min read
Python 內建有不少時間相關的操作函數,本篇將如何取得日期區間記錄成 Python recipes ,以供方便使用。
這些方法主要使用 timedelta
進行時間加減、 calendar
取得月份天數以及其他 datetime
模組所提供之函數組合而成。
import calendar
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
# 取得今天日期
today = date.today() # datetime.date(2014, 6, 2)
# 取得今天 0 時 0 分
datetime.combine(today, time.min) # dateime.date(2014, 6, 2, 0, 0)
# 取得今天 23 時 59 分 59 秒
datetime.combine(today, time.max) # datetime.datetime(2014, 6, 2, 23, 59, 59, 999999)
# 取得本月天數
days = calendar.monthrange(today.year, today.month)[1] # 30
# 取得本月最後 1 天日期
date(today.year, today.month, days) # datetime.date(2014, 6, 30)
# 取得本月 1 號
date(today.year, today.month, 1) # datetime.date(2014, 6, 1)
# 取得上月第 1 天與最後 1 天
def previous_month_range():
today = date.today()
# number of days in previous month
last_dt = today - timedelta(days=today.day)
return (
date(last_dt.year, last_dt.month, 1),
date(last_dt.year, last_dt.month, last_dt.day)
)
# 取得去年的今天
today - timedelta(days=365) # datetime.date(2013, 6, 2)
# 取得本週第 1 天與最後 1 天(Mon, Sun)
def current_week_range():
today = date.today()
y, m, d, dow = today.year, today.month, today.day, today.weekday()
add_timedelta = timedelta(days=6-dow)
sub_timedelta = timedelta(days=dow)
return (today - sub_timedelta, today + add_timedelta)
參考資料:
https://docs.python.org/2/library/datetime.html
https://docs.python.org/2/library/calendar.html