1. 程式人生 > >python3之datetime模塊

python3之datetime模塊

比較 sta etime 類型 調用 borde datetime 默認 one

生成時間

註意微秒不能是浮點數

  1: import datetime
  2: t = datetime.time(1, 2, 3, 4)
  3: print(t.hour, t.minute, t.second, t.microsecond, t.tzinfo)
  4: print(datetime.time.min)
  5: print(datetime.time.max)

結果

  1: 1 2 3 4 None
  2: 00:00:00
  3: 23:59:59.999999

或者datetime.datetime.now() 返回當前的datetime日期類型

  1: import datetime
  2: print(datetime.datetime.now())

結果:

  1: 2019-01-30 18:18:51.298951

這樣就有,d.timestamp(),d.today(), d.year,d.timetuple()等方法可以調用

生成日期

方法1:直接生成當前日期

  1: import datetime
  2: t = datetime.date.today()
  3: print(t)
  4: print(t.year, t.month, t.day)

結果

  1: 2019-01-30
  2: 2019 1 30

方法2:由時間戳或者Gregorian日歷來生成

  1: import
datetime
  2: import time
  3: 
  4: t = 733114
  5: print(datetime.date.fromordinal(t))
  6: t1 = time.time()
  7: print(datetime.date.fromtimestamp(t1))
  8: 
  9: print(datetime.date.min)
 10: print(datetime.date.max)
 11: # 最低的單位
 12: print(datetime.date.resolution)

結果:

  1: 2008-03-13
  2: 2019-01-30
  3: 0001-01-01
  4: 9999-12-31
  5: 1 day, 0:00:00

方法3:由現有時間創建

  1: import datetime
  2: 
  3: d1 = datetime.date(2008, 3, 29)
  4: print(d1.ctime())
  5: d2 = d1.replace(year=2019, month=1, day=30)
  6: print(d2)
  7: print(d2.ctime())

結果:

  1: Sat Mar 29 00:00:00 2008
  2: 2019-01-30
  3: Wed Jan 30 00:00:00 2019

時間的計算

  1: import datetime
  2: today = datetime.date.today()
  3: print("today:", today)
  4: one_day = datetime.timedelta(days=1)
  5: yesterday = today - one_day
  6: tomorrow = today + one_day
  7: print("yesterday:", yesterday)
  8: print("tomorrow:", tomorrow)
  9: # 也支持浮點數
 10: one_point_five_day = one_day * 1.5

結果

  1: today: 2019-01-30
  2: yesterday: 2019-01-29
  3: tomorrow: 2019-01-31

時間的比較

  1: import datetime
  2: t1 = datetime.time(12, 55, 0)
  3: t2 = datetime.time(13, 55, 0)
  4: if t1 < t2:
  5:     print("lasted time:", t2)
  6: 
  7: d1 = datetime.date.today()
  8: d2 = datetime.date.today() + datetime.timedelta(days=1)
  9: if d1 < d2:
 10:     print("lasted date:", d2)

結果:

  1: lasted time: 13:55:00
  2: lasted date: 2019-01-31

格式化和解析

默認格式:YYYY-MM-DDTHH:MM:SS.mmmmm

可以用strftime()生成其他格式,strptime可以將格式化的字符串轉化成datetime實例

  1: import datetime
  2: 
  3: today = datetime.datetime.today()
  4: format = "%a %b %d %H:%M:%S %Y"
  5: s = today.strftime(format)
  6: print("strftime:", s)
  7: d = datetime.datetime.strptime(s, format)
  8: print("strptime:", d)
  9: print("strptime->strftime:", d.strftime(format))

結果:

  1: strftime: Wed Jan 30 18:38:53 2019
  2: strptime: 2019-01-30 18:38:53
  3: strptime->strftime: Wed Jan 30 18:38:53 2019

所有格式化符號如下:

  • %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 當前時區的名稱
  • %% %號本身

時區

建議使用模塊pytz。

python3之datetime模塊