用了一段時間的django開發web項目,也是第一次用python來開發項目,全部有許多相關的知識點須要總結,本文所介紹的python的日期時間處理就是最近用到的,但願對各位有所幫助,也同時做爲本身的筆記儲存。python
Python 提供了time、 calendar、datetime 等模塊用於處理日期和時間,較爲經常使用的仍是datetime模塊。web
時間間隔是以秒爲單位的浮點小數。django
每一個時間戳都以自從1970年1月1日午夜(曆元)通過了多長時間來表示。code
python中時間日期格式化符號:orm
calendar開發
獲取年曆字符串
# 返回一個多行字符串格式的year年年曆,3個月一行,間隔距離爲c calendar.calendar(2017)
獲取日曆string
# 獲取2017年11月日曆 >>> print calendar.month(2017, 11) November 2017 Mo Tu We Th Fr Sa Su 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
獲取一週一行的月日曆ast
# 獲取2017年11月週日歷集合 >>> print calendar.monthcalendar(2017,11) [[0, 0, 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, 0, 0, 0]]
獲取日期爲星期幾form
# 獲取2017年11月11日是星期幾(0-6表明星期一到星期日) >>> print calendar.weekday(2017,11,11) 5
datetime
獲取當前日期時間
# 獲取當前時間(datetime類型) >>> print datetime.datetime.now() 2017-11-11 17:21:56.076882 # 獲取當前日期 >>> print datetime.datetime.now().date() 2017-11-11 >>> print datetime.date.today() 2017-11-11 # 獲取當前時間的字符串 >>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") '2017-11-11 17:21:56'
獲取當前日期的後幾天/前幾天
# 獲取明天 >>> print datetime.date.today() + datetime.timedelta(days=1) 2017-11-12 >>> print datetime.date.today() + datetime.timedelta(1) 2017-11-12 # 獲取昨天 >>> print datetime.date.today() - datetime.timedelta(days=1) 2017-11-10 >>> print datetime.date.today() - datetime.timedelta(1) 2017-11-10
獲取本週/本月最後一天及第一天
>>> today = datetime.date.today() # 獲取本週第一天 >>> print today - datetime.timedelta(today.weekday()) 2017-11-06 # 獲取本週最後一天 >>> print today + datetime.timedelta(6-today.weekday()) 2017-11-12 # 獲取本月第一天 >>> print datetime.date(today.year, today.month, 1) 2017-11-01 # 獲取本月最後一天 >>> first_day_weekday, last_day_num = calendar.monthrange(today.year, today.month) >>> print datetime.date(today.year, today.month, last_day_num) 2017-11-30
獲取當天最小時間/最大時間
# 獲取當天最小時間 >>> print datetime.datetime.combine(datetime.date.today(), datetime.time.min) 2017-11-11 00:00:00 # 獲取當天最大時間 >>> print datetime.datetime.combine(datetime.date.today(), datetime.time.max) 2017-11-11 23:59:59.999999
time
獲取當前時間戳
>>> print time.time() 1510396655.7
獲取本地時間
>>> print time.localtime(time.time()) time.struct_time(tm_year=2017, tm_mon=11, tm_mday=11, tm_hour=18, tm_min=13, tm_sec=57, tm_wday=5, tm_yday=315, tm_isdst=0)
獲取格式化時間
# 格式化成%Y-%m-%d %H:%M:%S形式 >>> print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 2017-11-11 18:58:39 # 格式化成%a %b %d %H:%M:%S %Y形式 >>> print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) Mon Nov 11 18:58:40 2017 # 將格式字符串轉換爲時間戳 >>> format_time = time.strptime("2017-11-11 18:58:39", "%Y-%m-%d %H:%M:%S") >>> print time.mktime(format_time) 1510396712.0
各個時間格式之間的轉換
datetime <=> date
# datetime=> date >>> print datetime.datetime.now().date() 2017-11-11 # date => datetime >>> today = datetime.date.today() >>> print datetime.datetime.combine(today, datetime.time.min) 2017-11-11 00:00:00
datetime <=> timestamp
# datetime => timestamp >>> print time.mktime(datetime.datetime.now().timetuple()) 1510396755.0 # timestamp => datetime >>> print datetime.datetime.fromtimestamp(1510396755.0) 2017-11-11 18:39:15
datetime <=> string
# datetime => string >>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 2017-11-11 18:39:15 # string => datetime >>> print datetime.datetime.strptime("2017-11-11 18:39:15", "%Y-%m-%d %H:%M:%S") 2017-11-11 18:39:15
datetime <=> timetuple
# datetime => timetuple >>> print datetime.datetime.now().timetuple() time.struct_time(tm_year=2017, tm_mon=11, tm_mday=11, tm_hour=18, tm_min=50, tm_sec=57, tm_wday=5, tm_yday=315, tm_isdst=0) # timetuple => datetime >>> time_tuple = datetime.datetime.now().timetuple() >>> print datetime.datetime.fromtimestamp(time.mktime(time_tuple)) 2017-11-11 18:50:35