計算機的系統時鐘設置為特定的日期、時間和時區。內置的 time 模塊讓 Python程序能讀取系統時鐘的當前時間。在 time 模塊中, time.time()和 time.sleep()函數是最有用的模塊。
time模塊
time.time()函數
Unix 紀元是編程中經常參考的時間: 1970 年 1 月 1 日 0 點,即協調世界時( UTC)。
time.time()函數
返回自那一刻以來的秒數,是一個浮點值(回想一下,浮點值只是一個帶小數點的數)。這個數字稱為 UNIX 紀元時間戳。
紀元時間戳可以用于剖析代碼,也就是測量一段代碼的運行時間。如果在代碼塊開始時調用time.time(), 并在結束時再次調用,就可以用第二個時間戳減去第一個,得到這兩次調用之間經過的時間。
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()函數
如果需要讓程序暫停一下,就調用 time.sleep()函數,并傳入希望程序暫停的秒數
>>
>
import
time
>>
>
for
i
in
range
(
3
)
:
print
(
'Tick'
)
time
.
sleep
(
1
)
print
(
'Tock'
)
time
.
sleep
(
1
)
time.gmtime([secs])
將 seconds since the epoch 為單位的時間轉換為UTC的 struct_time ,其中dst標志始終為零。如果未提供 secs 或為 None ,則使用由 time() 返回的當前時間。忽略一秒的分數。
time.localtime([secs])
與 gmtime() 相似但轉換為當地時間。如果未提供 secs 或為 None ,則使用由 time() 返回的當前時間。當 DST 適用于給定時間時,dst標志設置為 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:
將結構化時間轉化為字符串時間
- format:為格式化的時間格式,
- p_tuple為格式化時間
print
(
time
.
strftime
(
'%Y-%m-%d'
,
time
.
localtime
(
)
)
)
輸出:
2019
-
06
-
19
strptime(string, format) -> struct_time
字符串時間轉化為格式化時間
#------將字符串時間轉成結構化時間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
了解更多,請參考官方文檔
datetime 模塊
time 模塊用于取得 Unix 紀元時間戳,并加以處理。但是,如果以更方便的格式顯示日期,或對日期進行算術運算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就應該使用 atetime 模塊。
datetime 模塊有自己的 datetime 數據類型。 datetime 值表示一個特定的時刻。
>>
>
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
)
調用
datetime.datetime.now()
返回一個 datetime 對象,表示當前的日期和時間,根據你的計算機的時鐘。這個對象包含當前時刻的年、月、日、時、分、秒和微秒。也可以利用
datetime.datetime()函數
,向它傳入代表年、月、日、時、分、秒的整數,得到特定時刻的 datetime 對象。這些整數將保存在 datetime 對象的 year、month、 day、 hour、 minute 和 second屬性中。
Unix 紀元時間戳可以通過
datetime.datetime.fromtimestamp()
轉換為 datetime對象。 datetime 對象的日期和時間將根據本地時區轉換。
>>
>
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 數據類型
datetime 模塊還提供了 timedelta 數據類型,它表示一段時間,而不是一個時刻。
>>
>
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'
要
創建 timedelta 對象
,就用
datetime.timedelta()函數
。 datetime.timedelta()函數接受關鍵字參數 weeks、 days、 hours、 minutes、 seconds、 milliseconds 和 microseconds。沒有 month 和 year 關鍵字參數,因為“月”和“年”是可變的時間,依賴于特定月份或年份。 timedelta 對象擁有的總時間以天、秒、微秒來表示。這些數字分別保存在 days、 seconds 和 microseconds 屬性中。 total_seconds()方法返回只以秒表示的時間。將一個 timedelta 對象傳入 str(),將返回格式良好的、人類可讀的字符串表示。
將 datetime 對象轉換為字符串
Unix 紀元時間戳和 datetime 對象對人類來說都不是很友好可讀。利用
strftime()方法
,可以將 datetime 對象顯示為字符串。(strftime()函數名中的 f 表示格式, format)。
向 strftime()傳入一個定制的格式字符串,其中包含格式化指定(以及任何需要的斜線、冒號等), strftime()將返回一個格式化的字符串,表示 datetime 對象的信息。
>>
>
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"
將字符串轉換成 datetime 對象
如果有一個字符串的日期信息,如’2015/10/21 16:29:00’或’October 21, 2015’,需要將它轉換為 datetime 對象,就用 datetime.datetime.strptime()函數。
strptime()函數
與strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一樣。必須將格式字符串傳入 strptime(),這樣它就知道如何解析和理解日期字符串( strptime()函數名中 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
)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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