python日期時間處理總結

用了一段時間的django開發web項目,也是第一次用python來開發項目,全部有許多相關的知識點須要總結,本文所介紹的python的日期時間處理就是最近用到的,但願對各位有所幫助,也同時做爲本身的筆記儲存。python

Python 提供了time、 calendar、datetime 等模塊用於處理日期和時間,較爲經常使用的仍是datetime模塊。web

時間間隔是以秒爲單位的浮點小數。django

每一個時間戳都以自從1970年1月1日午夜(曆元)通過了多長時間來表示。code

python中時間日期格式化符號:orm

  • %y 兩位數的年份表示(00-99)
  • %Y 四位數的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月內中的一天(0-31)
  • %H 24小時制小時數(0-23)
  • %I 12小時制小時數(01-12)
  • %M 分鐘數(00=59)
  • %S 秒(00-59)
  • %a 本地簡化星期名稱
  • %A 本地完整星期名稱
  • %b 本地簡化的月份名稱
  • %B 本地完整的月份名稱
  • %c 本地相應的日期表示和時間表示
  • %j 年內的一天(001-366)
  • %p 本地A.M.或P.M.的等價符
  • %U 一年中的星期數(00-53)星期天爲星期的開始
  • %w 星期(0-6),星期天爲星期的開始
  • %W 一年中的星期數(00-53)星期一爲星期的開始
  • %x 本地相應的日期表示
  • %X 本地相應的時間表示
  • %Z 當前時區的名稱
  • %% %號自己

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
相關文章
相關標籤/搜索