Python日期時(shí)間Time模塊實(shí)例詳解
本文實(shí)例講述了Python日期時(shí)間Time模塊。分享給大家供大家參考,具體如下:
關(guān)于時(shí)間和日期模塊
python程序能用很多方式處理日期和時(shí)間,轉(zhuǎn)換日期格式是一種常見(jiàn)的功能。
python提供了一個(gè)time和calendar模塊可以用于格式化日期和時(shí)間。
時(shí)間間隔是以秒為單位的浮點(diǎn)小數(shù)
每個(gè)時(shí)間戳都以自從1970年1月1日午夜(歷元)經(jīng)過(guò)了多長(zhǎng)時(shí)間來(lái)表示。
python的time模塊下有很多函數(shù)可以轉(zhuǎn)換常見(jiàn)的日期格式。
Time模塊
1.1 名詞解釋
UTC :格林威治天文時(shí)間,世界標(biāo)準(zhǔn)時(shí)間,在中國(guó)為UTC-8
DST:夏令時(shí)是一種節(jié)約能源而人為規(guī)定的時(shí)間制度,在夏季調(diào)快一小時(shí).
1.2 時(shí)間的表示形式
1.時(shí)間戳
以整數(shù)或浮點(diǎn)型表示的是一個(gè)秒為單位的時(shí)間間隔,這個(gè)時(shí)間的基礎(chǔ)值1970.1.1的零點(diǎn)開始算起
2.元組格式
采用python的數(shù)據(jù)結(jié)構(gòu)表示,這個(gè)元組有9個(gè)整型內(nèi)容,分別表示不同含義
year month day hours minutes seconds weekday Julia day flag[1 夏令時(shí) -1 根據(jù)當(dāng)前時(shí)間判斷 0 正常表示]
3.格式化字符串
%Y 完整年份
時(shí)間格式
''' %a 本地(local) 簡(jiǎn)化星期名稱 %A 本地完整星期名稱 %b 本地簡(jiǎn)化月份名稱 %B 本地完整月份名稱 %c 本地相應(yīng)的日期和時(shí)間表示 %d 一個(gè)月中的第幾天(01-31) %H 一天中的第幾個(gè)小時(shí)(24小時(shí)制00-23) %I 第幾個(gè)小時(shí)(12小時(shí)制01-12) %j 一年中的第幾天(001-366) %m 月份(01-12) %M 分鐘數(shù)(00-59) %p 本地am或pm的相應(yīng)符 %S 秒(01-60) %U 一年中的星期數(shù)。(00-53 星期天是一個(gè)星期的開始)第一個(gè)星期天之前的所有天數(shù)都放在第0周 %w 一個(gè)星期中的第幾天(0-6 0是星期天) %W 和%U基本相同,不同的是%W以星期一為一個(gè)星期的開始 %x 本地相應(yīng)日期 %X 本地相應(yīng)時(shí)間 %y 去掉世紀(jì)的年份(00-99) %Y 完整的年份 %z 時(shí)區(qū)的名字 %% '%'字符 ''' import time time1 = time.time() lt = time.localtime(time1) st = time.strftime('''a: %a |A: %A |b: %b |B: %B |c: %c |d: %d H: %H |I: %I |j: %j |m: %m |M: %M |p: %p S: %S |U: %U |w: %w |W: %W |x: %x |X: %X y: %y |Y: %Y |z: %z |%% ''',lt) print(st)
輸出:
a: Thu |A: Thursday |b: Apr |B: April |c: Thu Apr 12 17:15:19 2018 |d: 12
H: 17 |I: 05 |j: 102 |m: 04 |M: 15 |p: PM
S: 19 |U: 14 |w: 4 |W: 15 |x: 04/12/18 |X: 17:15:19
y: 18 |Y: 2018 |Z: +0800 |%
獲取當(dāng)前時(shí)間
1、time.clock()
以浮點(diǎn)數(shù)計(jì)算秒數(shù),返回程序運(yùn)行的時(shí)間。
print(time.clock()) time.sleep(2) print(time.clock())
輸出:
0.0
2.0007889054974255
print(time.clock())
輸出:
4.665319322446344e-07
用處:可用來(lái)計(jì)算一段程序運(yùn)行的時(shí)間。
import time start = time.clock() for cock in range(5,101,5): # 公雞 for hen in range(3,101 - cock,3): #母雞 for chick in range(1,101 - cock - hen): #小雞 if cock // 5 + hen // 3 + chick * 3 == 100 and cock + hen + chick == 100: pass end = time.clock() time2 = end - start print("方案二所花時(shí)間",time2)
輸出:
方案二所花時(shí)間 0.0041665966868768296
2、time.sleep(seconds)
程序休眠seconds再執(zhí)行下面的語(yǔ)句。單位s
3、time.time() 時(shí)間戳
返回一個(gè)浮點(diǎn)型數(shù)據(jù)
格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù)。通俗的講, 時(shí)間戳是一份能夠表示一份數(shù)據(jù)在一個(gè)特定時(shí)間點(diǎn)已經(jīng)存在的完整的可驗(yàn)證的數(shù)據(jù)。 它的提出主要是為用戶提供一份電子證據(jù), 以證明用戶的某些數(shù)據(jù)的產(chǎn)生時(shí)間。
time1 = time.time() print(time1)
輸出:
1523427779.9672592
4、time.gmtime(時(shí)間戳)
把時(shí)間戳轉(zhuǎn)成格林尼治時(shí)間,返回一個(gè)時(shí)間元組
time1 = time.time() gm = time.gmtime(time1) print(gm)
輸出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=11, tm_hour=6, tm_min=22, tm_sec=59, tm_wday=2, tm_yday=101, tm_isdst=0)
5、time.localtime(時(shí)間戳)
把時(shí)間戳轉(zhuǎn)成本地時(shí)間,返回一個(gè)時(shí)間元組。(如中國(guó)時(shí)區(qū),加上8個(gè)小時(shí))
time1 = time.time() lm = time.localtime(time1) print(lm)
輸出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=11, tm_hour=14, tm_min=22, tm_sec=59, tm_wday=2, tm_yday=101, tm_isdst=0)
6、time.mktime(時(shí)間元組)
把時(shí)間元組轉(zhuǎn)成時(shí)間戳,返回一個(gè)浮點(diǎn)數(shù)。
lm2 = time.localtime(1523328000) time2 = time.mktime(lm2) print(time2)
輸出:
1523328000.0
7、time.asctime(時(shí)間元組)
將時(shí)間元組轉(zhuǎn)成一個(gè)字符串。
lm2 = time.localtime(1523328000) st = time.asctime(lm2) print(st)
輸出:
Tue Apr 10 10:40:00 2018
8、time.ctime(時(shí)間戳)
將時(shí)間戳轉(zhuǎn)成一個(gè)字符串。
time1 = time.time() ct = time.ctime(time1) print(ct)
輸出:
Wed Apr 11 15:18:35 2018
9、time.strftime(format,時(shí)間元組)
將時(shí)間元組轉(zhuǎn)成指定格式的字符串。
time1 = time.time() lm = time.localtime(time1) sct = time.strftime("%Y-%m-%d %X",lm) print(sct)
輸出:
2018-04-11 15:18:35
10、time.strptime(字符串,format)
將指定格式的字符串轉(zhuǎn)成時(shí)間元組。
strp = time.strptime('2018-04-10 11:12:57',"%Y-%m-%d %X")
print(strp)
輸出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=10, tm_hour=11, tm_min=12, tm_sec=57, tm_wday=1, tm_yday=100, tm_isdst=-1)
11、獲取凌晨零點(diǎn)到23:59的時(shí)間
now = time.time() midnight = now - (now % 86400) + time.timezone pre_midnight = midnight - 86400 now_midnight = midnight - 1 start_time = datetime.datetime.strptime(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(pre_midnight)), "%Y-%m-%d %H:%M:%S") end_time = datetime.datetime.strptime(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now_midnight)), "%Y-%m-%d %H:%M:%S")
PS:這里再為大家推薦幾款關(guān)于日期與天數(shù)計(jì)算的在線工具供大家使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線萬(wàn)年歷日歷:
http://tools.jb51.net/bianmin/wannianli
在線陰歷/陽(yáng)歷轉(zhuǎn)換工具:
http://tools.jb51.net/bianmin/yinli2yangli
Unix時(shí)間戳(timestamp)轉(zhuǎn)換工具:
http://tools.jb51.net/code/unixtime
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python日期與時(shí)間操作技巧總結(jié)》、《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
復(fù)習(xí)Python中的字符串知識(shí)點(diǎn)
這篇文章主要介紹了Python中字符串的一些知識(shí)點(diǎn),來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)自動(dòng)解數(shù)獨(dú)小程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)解數(shù)獨(dú)小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Python實(shí)現(xiàn)二叉樹結(jié)構(gòu)與進(jìn)行二叉樹遍歷的方法詳解
二叉樹是最基本的數(shù)據(jù)結(jié)構(gòu),這里我們?cè)赑ython中使用類的形式來(lái)實(shí)現(xiàn)二叉樹并且用內(nèi)置的方法來(lái)遍歷二叉樹,下面就讓我們一起來(lái)看一下Python實(shí)現(xiàn)二叉樹結(jié)構(gòu)與進(jìn)行二叉樹遍歷的方法詳解2016-05-05簡(jiǎn)單有效上手Python3異步asyncio問(wèn)題
這篇文章主要介紹了簡(jiǎn)單有效上手Python3異步asyncio問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python Web框架Flask信號(hào)機(jī)制(signals)介紹
這篇文章主要介紹了Python Web框架Flask信號(hào)機(jī)制(signals)介紹,本文介紹Flask的信號(hào)機(jī)制,講述信號(hào)的用途,并給出創(chuàng)建信號(hào)、訂閱信號(hào)、發(fā)送信號(hào)的方法,需要的朋友可以參考下2015-01-01Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼
marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于對(duì)對(duì)象進(jìn)行序列化和反序列化,并同步進(jìn)行數(shù)據(jù)驗(yàn)證。這篇文章主要介紹了Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼,需要的朋友可以參考下2020-02-02Python使用multiprocessing實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的分布式作業(yè)調(diào)度系統(tǒng)
mutilprocess像線程一樣管理進(jìn)程,這個(gè)是mutilprocess的核心,他與threading很是相像,對(duì)多核CPU的利用率會(huì)比threading好的多,通過(guò)本文給大家介紹Python使用multiprocessing實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的分布式作業(yè)調(diào)度系統(tǒng),需要的朋友參考下2016-03-03