"""時間處理 """ __author__on__ = 'shaozhiqi 2019/9/25' # !/usr/bin/env python3 # -*- coding: utf-8 -*- # ------------------------------------------datetime--------------------------------------- from datetime import datetime, timedelta now = datetime.now() # 獲取當前datetime print(now) # 2019-09-25 14:43:15.124296 print(type(now)) # <class 'datetime.datetime'> # 如果僅導入import datetime,則必須引用全名datetime.datetime。 # datetime.now()返回當前日期和時間,其類型是datetime。 # 要指定某個日期和時間,我們直接用參數構造一個datetime: dt = datetime(2019, 4, 19, 12, 20) # 用指定日期時間創建datetime print(dt) # 2019-04-19 12:20:00 # ------------------------------------------------datetime轉換為timestamp------------------------------------------ # 在計算機中,時間實際上是用數字表示的。我們把1970年1月1日 00:00:00 UTC+00:00時區的時刻稱為epoch time, # 記為0(1970年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。 # 可見timestamp的值與時區毫無關系,因為timestamp一旦確定,其UTC時間就確定了,轉換到任意時區的時間也是完全確定的, # 這就是為什么計算機存儲的當前時間是以timestamp表示的,因為全球各地的計算機在任意時刻的timestamp都是完全相同的(假定時間已校准)。 dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創建datetime print(dt.timestamp()) # 把datetime轉換為timestamp # 1429417200.0 # 注意Python的timestamp是一個浮點數。如果有小數位,小數位表示毫秒數。 # 某些編程語言(如Java和JavaScript)的timestamp使用整數表示毫秒數,這種情況下只需要把timestamp除以1000就得到Python的浮點表示方法。 # --------------------------------------------------timestamp轉換為datetime---------------------------------------- # 要把timestamp轉換為datetime,使用datetime提供的fromtimestamp()方法: t = 1429417200.0 print(datetime.fromtimestamp(t)) # 2015-04-19 12:20:00 # 注意到timestamp是一個浮點數,它沒有時區的概念,而datetime是有時區的。上述轉換是在timestamp和本地時間做轉換。 # 本地時間是指當前操作系統設定的時區。例如北京時區是東8區,則本地時間: # 2015-04-19 12:20:00 # --------------------------------------------------str轉換為datetime------------------------------------------------- # 很多時候,用戶輸入的日期和時間是字符串,要處理日期和時間,首先必須把str轉換為datetime。 # 轉換方法是通過datetime.strptime()實現,需要一個日期和時間的格式化字符串: cday = datetime.strptime('2019-6-1 18:19:59', '%Y-%m-%d %H:%M:%S') print(cday) # 2019-06-01 18:19:59 # ----------------------------------------------------datetime轉換為str------------------------------------------------ # 如果已經有了datetime對象,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過strftime()實現的,同樣需要一個日期和時間的格式化字符串: now = datetime.now() print(now.strftime('%a, %b %d %H:%M')) # Wed, Sep 25 14:56
# ------------------------------------------------datetime加減--------------------------------------------------------
now = datetime.now()
print('now1:', now) # now1: 2019-09-25 18:40:57.979018
now2=now + timedelta(hours=10)
print('now2:', now2) # now2: 2019-09-26 04:40:57.979018
now3=now - timedelta(days=1)
print('now3:', now3) # now3: 2019-09-24 18:40:57.979018
now4=now + timedelta(days=2, hours=12)
print('now4:', now4) # now4: 2019-09-28 06:40:57.979018