iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Software Development

跟著 OXXO 一起學 Python系列 第 40

( Day 19.2 ) Python 時間處理 time

  • 分享至 

  • xImage
  •  

Python 的標準函式「time」提供不少處理時間的方法,除了可以取得目前的時間或轉換時間,也能夠透過像是 sleep() 的方法將程式暫停,進一步做出許多跟時間有關的應用。

原文參考:時間處理 time

本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )

time 常用方法

下方列出幾種 time 模組常用的方法 ( 參考 Python 官方文件:time ):

方法 參數 說明
time() 回傳到目前為止的秒數
sleep() sec 將程式暫停指定的秒數
ctime() t 轉換為本地時間
localtime()、time.gmtime() t 轉換為 struct_time 格式的時間
mktime() t 轉換 struct_time 格式的時間為秒數
asctime() t 轉換 struct_time 格式的時間為文字
strftime()、time.strptime() t 回傳特定格式字串所表示的時間

import time

要使用 time 必須先 import time 模組,或使用 from 的方式,單獨 import 特定的類型。

import time
from time import sleep

time()

time.time() 執行後會回傳 1970 年 1 月 1 日 00:00:00 到現在的秒數 ( 精確度到 1/1000000 秒 ),秒數使用浮點數 float 的格式,如果改成 time.time_ns() 會回傳 ns 數 ( 1/1000000000 秒 )

import time
print(time.time())     # 1634629287.537577
print(time.time_ns())  # 1634629287537744648

sleep(sec)

time.sleep(sec) 能將程式暫停指定的秒數,停止結束後,在繼續後面的程式。

import time
print(time.ctime(time.time()))   # Tue Oct 19 07:59:19 2021
time.sleep(2)                    # 暫停兩秒
print(time.ctime(time.time()))   # Tue Oct 19 07:59:21 2021

ctime(t)

time.ctime(t) 能將 time.time(t) 得到的時間,轉換為本地時間。

import time
t = time.time()
print(time.ctime(t))   # Tue Oct 19 07:47:58 2021

localtime(t)、time.gmtime(t)

time.localtime(t) 和 time.gmtime(t) 能將 time.time() 得到的時間,轉換為 struct_time 格式的本地時間 ( 差別在於 time.gmtime(t) 是回傳 UTC 時間 )。

import time
t = time.time()
print(time.localtime(t))
# time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=8, tm_sec=28, tm_wday=1, tm_yday=292, tm_isdst=0)

按照下方的做法,就能使用 struct_time 格式的時間。

import time
t = time.time()
tt = time.localtime(t)
print(tt.tm_year)     # 2021
print(tt.tm_mon)      # 10

mktime(t)

time.mktime(t) 可以將 struct_time 格式的時間轉換回秒數。

import time
t = time.time()
t1 = time.localtime(t)
t2 = time.mktime(t1)
print(t)     # 1634631418.445556
print(t1)    # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=16, tm_sec=58, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2)    # 1634631418.0

asctime()

time.asctime(t) 可以將 struct_time 格式的時間轉換為文字顯示。

import time
t = time.time()
t1 = time.localtime(t)
t2 = time.asctime(t1)
print(t)      # 1634631577.3905456
print(t1)     # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=19, tm_sec=37, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2)     # Tue Oct 19 08:19:37 2021

strftime(t)、time.strptime(t)

time.strftime(t) 可以將時間轉換為特定格式字串,time.strptime(t) 則會將特定格式的字串,轉換為 struct_time 格式的時間 ( 詳細可參考 strftime() 和 strptime() )

import time
t = time.time()
t1 = time.localtime(t)
t2 = time.strftime('%Y/%m/%d %H:%M:%S',t1)
t3 = time.strptime(t2, '%Y/%m/%d %H:%M:%S')
print(t)     # 1634632136.9454331
print(t1)    # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=28, tm_sec=56, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2)    # 2021/10/19 08:28:56
print(t3)    # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=28, tm_sec=56, tm_wday=1, tm_yday=292, tm_isdst=-1)

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 19.1 ) Python 日期和時間 datetime
下一篇
( Day 19.3 ) Python 日曆 calendar
系列文
跟著 OXXO 一起學 Python101
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言