1. 程式人生 > >python模塊之時間模塊

python模塊之時間模塊

表示 元組 ren 完整 e30 mkt 傳參 orm 包含

time模塊

表示時間的三種方式

1. 時間戳(timestamp)

時間戳表示的是從1970年1月1日0時0分到當前時間的時間差,以秒計(浮點數),獲取時間戳的方式為time.time()

2. 格式化的時間字符串(format string)

帶格式的時間,也就是我們平時用到的時間,如"2018-12-18"

python中時間日期格式化符號

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

3. 結構化時間(struc_time)

結構化時間是一個包含9個元素的元組,元素分別是年、月、日、時、分、秒、一年中第幾周、一年中第幾天、是否是夏令時

技術分享圖片

示例:

import
time print(time.time()) # 1547215687.22852 print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2019-01-11 22:08:59 # 時間元組:localtime將一個時間戳轉化成當前時區的struct_time print(time.localtime()) # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=11, tm_sec=29, tm_wday=4, tm_yday=11, tm_isdst=0)

三種時間格式之間的轉化

技術分享圖片

技術分享圖片
# 格式化時間----> 結構化時間
ft = time.strftime("%Y-%m-%d %H:%M:%S")
print(ft)   # 2019-01-11 22:46:41
st = time.strptime(ft, "%Y-%m-%d %H:%M:%S")  # 第一個參數為格式化時間,第二個參數為具體格式
print(st)   # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=47, tm_sec=27, tm_wday=4, tm_yday=11, tm_isdst=-1)

# 結構化時間----> 時間戳
t = time.mktime(st)
print(t)   # 1547218165.0

# 時間戳----> 結構化時間
t = time.time()
st = time.localtime(t)
print(st)    # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=50, tm_sec=41, tm_wday=4, tm_yday=11, tm_isdst=0)

# 結構化時間----> 格式化時間
ft = time.strftime("%Y-%m-%d %H:%M:%S", st)  # 第一個參數為時間格式,第二個參數為結構化時間
print(ft)   # 2019-01-11 22:52:12
三種時間格式之間的轉換

4. asctime

python提供了一種默認的格式化時間asctime,格式為%a %b %d %H:%M:%S %Y

技術分享圖片
# asctime

# 結構化時間----> %a %b %d %H:%M:%S %Y串
# time.asctime(結構化時間)如果不穿參數。直接返回當前時間的格式化串
# print(time.asctime())   # Sat Jan 12 09:52:38 2019
# st = time.localtime(1500000000)   # 時間戳轉化成結構化時間
# print(st)   # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
# at = time.asctime(st)
# print(at)   # Fri Jul 14 10:40:00 2017

# 時間戳----> %a %b %d %H:%M:%S %Y串
# time.ctime(時間戳)  如果不傳參數,直接返回會當前時間的格式化串
# print(time.ctime())  # Sat Jan 12 10:04:36 2019
# print(time.ctime(2000000000))    # Wed May 18 11:33:20 2033

# t = time.time()
# ft = time.ctime(t)
# print(ft)   # Sat Jan 12 10:08:13 2019
asctime與結構化時間、時間戳之間的轉換

5. 計算時間差

技術分享圖片
# 計算時間差
# 1. 給出兩個格式化時間,計算時間差
ft1 = "2018-06-26 17:00:20"
ft2 = "2019-01-12 10:16:00"
# 思路:1. 把兩個格式化時間轉化成時間戳tt1和tt2
#      2. tt2-tt1得到tt3
#      3. 將tt3轉化成結構化時間
#      4. 提取結構化時間裏的年月日,處理後得到時間差

st1 = time.strptime(ft1, "%Y-%m-%d %H:%M:%S")  # 格式化時間--->結構化時間
st2 = time.strptime(ft2, "%Y-%m-%d %H:%M:%S")

tt1 = time.mktime(st1)    # 結構化時間--->時間戳
tt2 = time.mktime(st2)

tt3 = tt2 - tt1   # 時間戳相減
st3 = time.localtime(tt3)   # 時間戳--->結構化時間(命名元組)
print(st3)
# print(st3.tm_year)   # 提取結構化時間裏的年份
print("過去了%s年%s個月%s天%s小時%s分%s秒" % (st3.tm_year-1970, st3.tm_mon-1, st3.tm_mday, st3.tm_hour, st3.tm_min, st3.tm_sec))
計算時間差

datetime模塊

datetime主要用於調整時間

技術分享圖片
import datetime
# time1 = datetime.datetime(1998, 12, 18, 10, 8, 50)   # 調整到指定時間
# print(time1)   # 1998-12-18 10:08:50
#
# time2 = datetime.datetime(year=1993, month=7, day=7, hour=12)  # 年月日必須指定,時分秒可以部分指定或不指定,需按照年月日時分秒的順序
# print(time2)   # 1993-07-07 12:00:00

# 2. 根據當前時間指定時間
current_time = datetime.datetime.now()  # 獲取當前時間
print(current_time)  # 2019-01-12 11:00:57.630978
delta_time = datetime.timedelta(weeks=3)   # 3周後
print(current_time+delta_time)   # 2019-02-02 11:03:33.487401
print(current_time+datetime.timedelta(weeks=-3))  # 3周前
print(current_time+datetime.timedelta(days=-5))  # 5天前
print(current_time+datetime.timedelta(hours=6))   # 6天後

# 註意:只能調整的字段 weeks days hours minutes seconds

# 將時間戳轉化成時間
print(datetime.date.fromtimestamp(2247274932))    # 2041-03-19
調整時間

python模塊之時間模塊