計(jì)算機(jī)的系統(tǒng)時(shí)鐘設(shè)置為特定的日期、時(shí)間和時(shí)區(qū)。內(nèi)置的 time 模塊讓 Python程序能讀取系統(tǒng)時(shí)鐘的當(dāng)前時(shí)間。在 time 模塊中, time.time()和 time.sleep()函數(shù)是最有用的模塊。
time模塊
time.time()函數(shù)
Unix 紀(jì)元是編程中經(jīng)常參考的時(shí)間: 1970 年 1 月 1 日 0 點(diǎn),即協(xié)調(diào)世界時(shí)( UTC)。
time.time()函數(shù)
返回自那一刻以來(lái)的秒數(shù),是一個(gè)浮點(diǎn)值(回想一下,浮點(diǎn)值只是一個(gè)帶小數(shù)點(diǎn)的數(shù))。這個(gè)數(shù)字稱為 UNIX 紀(jì)元時(shí)間戳。
紀(jì)元時(shí)間戳可以用于剖析代碼,也就是測(cè)量一段代碼的運(yùn)行時(shí)間。如果在代碼塊開(kāi)始時(shí)調(diào)用time.time(), 并在結(jié)束時(shí)再次調(diào)用,就可以用第二個(gè)時(shí)間戳減去第一個(gè),得到這兩次調(diào)用之間經(jīng)過(guò)的時(shí)間。
import
time
def
calcProd
(
)
:
# Calculate the product of the first 100,000 numbers.
product
=
1
for
i
in
range
(
1
,
100000
)
:
product
=
product
*
i
return
product
startTime
=
time
.
time
(
)
prod
=
calcProd
(
)
endTime
=
time
.
time
(
)
print
(
'The result is %s digits long.'
%
(
len
(
str
(
prod
)
)
)
)
print
(
'Took %s seconds to calculate.'
%
(
endTime
-
startTime
)
)
輸出:
The result is 456569 digits long.
Took 10.653937101364136 seconds to calculate.
time.sleep()函數(shù)
如果需要讓程序暫停一下,就調(diào)用 time.sleep()函數(shù),并傳入希望程序暫停的秒數(shù)
>>
>
import
time
>>
>
for
i
in
range
(
3
)
:
print
(
'Tick'
)
time
.
sleep
(
1
)
print
(
'Tock'
)
time
.
sleep
(
1
)
time.gmtime([secs])
將 seconds since the epoch 為單位的時(shí)間轉(zhuǎn)換為UTC的 struct_time ,其中dst標(biāo)志始終為零。如果未提供 secs 或?yàn)?None ,則使用由 time() 返回的當(dāng)前時(shí)間。忽略一秒的分?jǐn)?shù)。
time.localtime([secs])
與 gmtime() 相似但轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間。如果未提供 secs 或?yàn)?None ,則使用由 time() 返回的當(dāng)前時(shí)間。當(dāng) DST 適用于給定時(shí)間時(shí),dst標(biāo)志設(shè)置為 1 。
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst)
import
time
t
=
time
.
localtime
(
)
print
(
'年:%s\t月:%s\t日:%s'
%
(
t
.
tm_year
,
t
.
tm_mon
,
t
.
tm_mday
)
)
輸出:
年:
2019
月:
6
日:
19
strftime(format[, tuple]) -> string:
將結(jié)構(gòu)化時(shí)間轉(zhuǎn)化為字符串時(shí)間
- format:為格式化的時(shí)間格式,
- p_tuple為格式化時(shí)間
print
(
time
.
strftime
(
'%Y-%m-%d'
,
time
.
localtime
(
)
)
)
輸出:
2019
-
06
-
19
strptime(string, format) -> struct_time
字符串時(shí)間轉(zhuǎn)化為格式化時(shí)間
#------將字符串時(shí)間轉(zhuǎn)成結(jié)構(gòu)化時(shí)間strptime
print
(
time
.
strptime
(
"2016:12:24:17:50:36"
,
"%Y:%m:%d:%X"
)
)
asctime([tuple]) -> string
When the time tuple is not present, current time as returned by localtime()
ctime(seconds) -> string
print
(
time
.
asctime
(
)
)
print
(
time
.
ctime
(
)
)
輸出:
Wed Jun
19
16
:
05
:
21
2019
Wed Jun
19
16
:
05
:
21
2019
了解更多,請(qǐng)參考官方文檔
datetime 模塊
time 模塊用于取得 Unix 紀(jì)元時(shí)間戳,并加以處理。但是,如果以更方便的格式顯示日期,或?qū)θ掌谶M(jìn)行算術(shù)運(yùn)算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就應(yīng)該使用 atetime 模塊。
datetime 模塊有自己的 datetime 數(shù)據(jù)類型。 datetime 值表示一個(gè)特定的時(shí)刻。
>>
>
import
datetime
>>
>
datetime
.
datetime
.
now
(
)
datetime
.
datetime
(
2015
,
2
,
27
,
11
,
10
,
49
,
55
,
53
)
>>
>
dt
=
datetime
.
datetime
(
2015
,
10
,
21
,
16
,
29
,
0
)
>>
>
dt
.
year
,
dt
.
month
,
dt
.
day
(
2015
,
10
,
21
)
>>
>
dt
.
hour
,
dt
.
minute
,
dt
.
second
(
16
,
29
,
0
)
調(diào)用
datetime.datetime.now()
返回一個(gè) datetime 對(duì)象,表示當(dāng)前的日期和時(shí)間,根據(jù)你的計(jì)算機(jī)的時(shí)鐘。這個(gè)對(duì)象包含當(dāng)前時(shí)刻的年、月、日、時(shí)、分、秒和微秒。也可以利用
datetime.datetime()函數(shù)
,向它傳入代表年、月、日、時(shí)、分、秒的整數(shù),得到特定時(shí)刻的 datetime 對(duì)象。這些整數(shù)將保存在 datetime 對(duì)象的 year、month、 day、 hour、 minute 和 second屬性中。
Unix 紀(jì)元時(shí)間戳可以通過(guò)
datetime.datetime.fromtimestamp()
轉(zhuǎn)換為 datetime對(duì)象。 datetime 對(duì)象的日期和時(shí)間將根據(jù)本地時(shí)區(qū)轉(zhuǎn)換。
>>
>
datetime
.
datetime
.
fromtimestamp
(
1000000
)
datetime
.
datetime
(
1970
,
1
,
12
,
5
,
46
,
40
)
>>
>
datetime
.
datetime
.
fromtimestamp
(
time
.
time
(
)
)
datetime
.
datetime
(
2015
,
2
,
27
,
11
,
13
,
0
,
604980
)
timedelta 數(shù)據(jù)類型
datetime 模塊還提供了 timedelta 數(shù)據(jù)類型,它表示一段時(shí)間,而不是一個(gè)時(shí)刻。
>>
>
delta
=
datetime
.
timedelta
(
days
=
11
,
hours
=
10
,
minutes
=
9
,
seconds
=
8
)
>>
>
delta
.
days
,
delta
.
seconds
,
delta
.
microseconds
(
11
,
36548
,
0
)
>>
>
delta
.
total_seconds
(
)
986948.0
>>
>
str
(
delta
)
'11 days, 10:09:08'
要
創(chuàng)建 timedelta 對(duì)象
,就用
datetime.timedelta()函數(shù)
。 datetime.timedelta()函數(shù)接受關(guān)鍵字參數(shù) weeks、 days、 hours、 minutes、 seconds、 milliseconds 和 microseconds。沒(méi)有 month 和 year 關(guān)鍵字參數(shù),因?yàn)椤霸隆焙汀澳辍笔强勺兊臅r(shí)間,依賴于特定月份或年份。 timedelta 對(duì)象擁有的總時(shí)間以天、秒、微秒來(lái)表示。這些數(shù)字分別保存在 days、 seconds 和 microseconds 屬性中。 total_seconds()方法返回只以秒表示的時(shí)間。將一個(gè) timedelta 對(duì)象傳入 str(),將返回格式良好的、人類可讀的字符串表示。
將 datetime 對(duì)象轉(zhuǎn)換為字符串
Unix 紀(jì)元時(shí)間戳和 datetime 對(duì)象對(duì)人類來(lái)說(shuō)都不是很友好可讀。利用
strftime()方法
,可以將 datetime 對(duì)象顯示為字符串。(strftime()函數(shù)名中的 f 表示格式, format)。
向 strftime()傳入一個(gè)定制的格式字符串,其中包含格式化指定(以及任何需要的斜線、冒號(hào)等), strftime()將返回一個(gè)格式化的字符串,表示 datetime 對(duì)象的信息。
>>
>
oct21st
=
datetime
.
datetime
(
2015
,
10
,
21
,
16
,
29
,
0
)
>>
>
oct21st
.
strftime
(
'%Y/%m/%d %H:%M:%S'
)
'2015/10/21 16:29:00'
>>
>
oct21st
.
strftime
(
'%I:%M %p'
)
'04:29 PM'
>>
>
oct21st
.
strftime
(
"%B of '%y"
)
"October of '15"
將字符串轉(zhuǎn)換成 datetime 對(duì)象
如果有一個(gè)字符串的日期信息,如’2015/10/21 16:29:00’或’October 21, 2015’,需要將它轉(zhuǎn)換為 datetime 對(duì)象,就用 datetime.datetime.strptime()函數(shù)。
strptime()函數(shù)
與strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一樣。必須將格式字符串傳入 strptime(),這樣它就知道如何解析和理解日期字符串( strptime()函數(shù)名中 p 表示解析, parse)。
>>
>
datetime
.
datetime
.
strptime
(
'October 21, 2015'
,
'%B %d, %Y'
)
datetime
.
datetime
(
2015
,
10
,
21
,
0
,
0
)
>>
>
datetime
.
datetime
.
strptime
(
'2015/10/21 16:29:00'
,
'%Y/%m/%d %H:%M:%S'
)
datetime
.
datetime
(
2015
,
10
,
21
,
16
,
29
)
>>
>
datetime
.
datetime
.
strptime
(
"October of '15"
,
"%B of '%y"
)
datetime
.
datetime
(
2015
,
10
,
1
,
0
,
0
)
>>
>
datetime
.
datetime
.
strptime
(
"November of '63"
,
"%B of '%y"
)
datetime
.
datetime
(
2063
,
11
,
1
,
0
,
0
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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