時間模塊
簡介
-
Python 程序能用很多方式處理日期和時間,轉換日期格式是一個常見的功能。Python 提供了一個 time 和 calendar 模塊可以用于格式化日期和時間。
時間間隔是以秒為單位的浮點小數。
每個時間戳都以自從1970年1月1日午夜(歷元)經過了多長時間來表示。
#常用方法
1.time.sleep(sesc)
#(線程)推遲指定的時間運行,單位為秒
2.time.time()
# 獲取當前時間戳(開始為1970年1月1日倫敦時間 結束為現在)
time模塊
-
介紹 : time模塊是最原始的時間模塊,可以在獲取數據的基礎上進行各種操作,還有一個datetime模塊,是在time模塊的基礎上有了更好的功能
-
表示時間的三種方式
-
時間戳(timestamp): 通常來說,時間戳表示的是倫敦時間自1970年1月1日00:00:00開始計算的時間偏移量,運行type(time.time)返回的一個float類型
-
結構化時間(struct_time): struct_time在python中是一個元組,元組中共有9個元素(分別是,年,月,日,時,分,秒,一年中第幾周,一年中第幾天,已經是否夏令時)
索引(Index ) 屬性(Attribute) 值(Values) 0 tm_year(年) 比如2011 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(時) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 60 6 tm_wday(weekday) 0 - 6(0表示周一) 7 tm_yday(一年中的第幾天) 1 - 366 8 tm_isdst(是否是夏令時) 默認為0 -
格式化時間(string_format_time):全稱字符串格式化時間,常說的人容易讀懂的時間,常用的格式一般為"1999-09-19 13:14:33"('%Y-%m-%d %H:%M:%S')
格式化方法 含義 %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 本地簡化星期名稱(Mon) %A 本地完整星期名稱(Monday) %b 本地簡化的月份名稱(Aug) %B 本地完整的月份名稱(August) %c 本地相應的日期表示和時間表示(Mon Aug 12 15:59:54 2019)外國人比較愛用 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天為星期的開始 %w 星期(0-6),星期1為星期的開始 %W 一年中的星期數(00-53)星期一為星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %本身
-
-
三種格式轉換圖
# 時間戳轉結構化時間
# time.gmtime(時間戳) # UTC時間,與應該倫敦當前時間一致
stmap_time = 1233345666
struct_t = time.gmtime(stmap_time)
#結果 time.struct_time(tm_year=2009, tm_mon=1, tm_mday=30, tm_hour=20, tm_min=1, tm_sec=6, tm_wday=4, tm_yday=30, tm_isdst=0)
# time.localtime(時間戳) # 當地時間。例如:在北京執行該方法,與UTC相差8小時,UTC時間+8 = 北京時間
struct_t = time.localtime(stmap_time)
#結果 time.struct_time(tm_year=2009, tm_mon=1, tm_mday=31, tm_hour=4, tm_min=1, tm_sec=6, tm_wday=5, tm_yday=31, tm_isdst=0)
# 結構化轉時間戳
sturc = time.mktime(結構化時間)
#結果 1565601587.0
# 格式化時間 -->結構化
結構化時間 = time.strptime(格式化時間,'%Y-%m-%d %H:%M:%S')
# 結構化 --> 格式化時間
格式化時間 = time.strftime(結構化時間,格式)
-
練習題
-
當前月1號對應的0點的時間戳
# 定義一個當前月分的一號0點字符串格式的時間 now_time = time.strftime('%Y-%m-01 00:00:00') # 將格式化時間轉換為結構化時間 jiegou = time.strptime(now_time, '%Y-%m-%d %H:%M:%S') # 將結構化時間轉換為對應的時間戳 shijiancuo = time.mktime(jiegou) print('%s對應的時間戳為%s'%(now_time,shijiancuo))
-
n1的時間 n2的時間 n2 - n1的時間經歷里多少年 月 日 時 分 秒
**思想**:需要首先將兩個字符串時間轉換為時間戳格式,然后相減,再轉換為結構化時間,然后減去時間戳最開始時間(倫敦時間:1970/01/01 00:00:00)
import time n1 = '2019-07-18 20:07:56' n2 = '2019-07-19 22:03:12' struct_time1, struct_time2 = time.strptime(n1, '%Y-%m-%d %H:%M:%S'), time.strptime(n2, '%Y-%m-%d %H:%M:%S') struct_time1, struct_time2 = time.mktime(struct_time1), time.mktime(struct_time2) diff_time = struct_time2 - struct_time1 struct_time = time.gmtime(diff_time) print('過去了{0}年{1}月{2}日{3}小時{4}分鐘{5}秒'.format( struct_time.tm_year-1970, struct_time.tm_mon-1, struct_time.tm_mday-1, struct_time.tm_hour, struct_time.tm_min, struct_time.tm_sec ))
-
datetime模塊
-
簡介:在time模塊基礎上進行更加豐富的功能
-
導入
from datetime import datetime
-
datetime操作
# 創造datetime數據 datetime.now() 獲取當前本地的datetime時間 # 獲取UTC時間 b=datetime.utcnow() # 結果 2019-08-12 17:25:52.475986 # 創建一個指定的時間 datetime(2017,8,9,11,22,33) # 結果 2017-08-09 11:22:33 # str類型 --> datetime # datetime時間 = datetime.strptime(字符串,格式) now = datetime.strptime('2017-08-09 11:22:33', '%Y-%m-%d %H:%M:%S') # 結果 2017-08-09 11:22:33 # datetime --> str時間 # str時間 = dt.strftime(格式) now = now.strftime('%Y-%m-%d %H:%M:%S')
-
練習:
-
將以下字符串轉換成datetime類型
'2017/9/30'
'2017年9月30日星期六'
'2017年9月30日星期六8時42分24秒'
'9/30/2017'
'9/30/2017 8:42:50 '# '2017/9/30' str_time = datetime.strptime('2017/9/30','%Y/%m/%d') print(str_time) # 結果 2017-09-30 00:00:00 # '2017年9月30日星期六' str_time = datetime.strptime('2017年9月30日星期六', '%Y年%m月%d日星期六') print(str_time) # 結果 2017-09-30 00:00:00 # 9/30/2017 str_time = datetime.strptime('9/30/2017', '%m/%d/%Y') print(str_time) # 結果 2017-09-30 00:00:00 # 9/30/2017 8:42:50 str_time = datetime.strptime('9/30/2017 8:42:50 ', '%m/%d/%Y %H:%M:%S ') print(str_time) #2017-09-30 08:42:50
-
將以下datetime類型轉換成字符串:
Saturday, September 30, 2017
9/30/2017 9:22:17 AM
September 30, 2017# Saturday, September 30, 2017 studect_t = datetime(2017,9,28,10,3,43) print(studect_t.strftime('%A, %B %d, %Y')) # 09/28/2017 10: 03: 43 AM studect_t = datetime(2017, 9, 28, 10, 3, 43) print(studect_t.strftime('%m/%d/%Y %H: %M: %S %p')) # September 30, 2017 studect_t = datetime(2017, 9, 28, 10, 3, 43) print(studect_t.strftime('%B %d ,%Y'))
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
