iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Software Development

軟體開發養成計畫:以小程式實作深化開發能力系列 第 22

[Day22]讓時間動起來:Python 的 datetime 與 schedule 入門

  • 分享至 

  • xImage
  •  

開場

承接我們前面所實作的記事提醒小程式,如果想讓它從一個手動操作的工具,進化成一個能**自動處理「定時執行」或「時間管理」**的系統,我們就需要更強大的工具。

在 Python 中,我們可以依靠專門處理時間和排程的工具模組來實現這些功能。今天,我們就要來探討兩個非常實用的工具── datetime、schedule

1.為什麼需要排程與提醒 ?

在我們日常的工作和程式開發中,定時執行時間提醒是不可或缺的功能,為什麼它如此重要呢?
首先要來說他最主要的好處是:

  • 自動化: 將重複性的工作交給程式自動處理,節省大量人力時間。
  • 減少人為遺漏: 確保任務在準確的時間執行,不會因為人為疏忽而錯過或遺漏。

若要舉現實中例子,這些功能在各行各業都有廣泛的應用,像是說:確保管理階層每天早上 9 點準時收到營運報告;應用程式發送會議或待辦事項通知;確保網路爬蟲每天凌晨定時抓取最新的資料等等。

2.Python datetime 模組介紹

在 Python 中,datetime 模組是處理日期與時間的必備工具,它能夠幫助我們取得當前時間、格式化顯示、計算時間差,對於日常開發非常實用。

(1)基本用途

  • 取得現在時間:datetime.now()
  • 格式化時間:strftime (轉換成字串)、strptime (字串轉回時間物件)
  • 計算時間差:timedelta

(2)範例程式碼

from datetime import datetime, timedelta

now = datetime.now()
print("現在時間:", now)

formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化後:", formatted)

future = now + timedelta(days=3, hours=5)
print("三天五小時後:", future)

3.Python schedule 套件介紹

schedule 是一個第三方排程套件,特色是簡單好用,能夠讓你快速寫出週期性任務,例如定時提醒或定期執行程式。

(1)安裝方式

我是利用 Android cmd 來安裝套件,非常簡易實用。

pip install schedule

(2)常用語法

以下提供語法範例:

import schedule
import time

def task():
    print("這是一個提醒任務")

# 每 10 秒執行一次
schedule.every(10).seconds.do(task)

# 每天 10:30 執行
schedule.every().day.at("10:30").do(task)

# 讓排程持續運作
while True:
    schedule.run_pending()
    time.sleep(1)

這樣就可以建立一個簡單的提醒小幫手,例如每分鐘輸出訊息,或模擬鬧鐘效果。

4.datetime 與 schedule 的結合應用

在實務應用中,常常需要同時判斷時間與排程任務,這時候 datetime 與 schedule 搭配就能發揮威力,datetime 負責時間格式的處理和比較,而 schedule 負責任務的定時觸發。
範例為:

import schedule
import time
from datetime import datetime

def reminder():
    now = datetime.now().strftime("%H:%M:%S")
    print(f"[{now}] 該喝水囉!")

schedule.every(1).minutes.do(reminder)

while True:
    schedule.run_pending()
    time.sleep(1)
  • 先用 datetime 的 strptime 確保使用者輸入的時間格式正確,再將其作為 schedule 定時執行的依據。
  • schedule 負責在每天特定時間觸發提醒任務,而提醒任務內容則會用 datetime.now() 記錄當前時間。

在今天的內容裡,我們看到了 datetime 與 schedule 各自扮演的角色,datetime 專門負責記錄與計算時間;而 schedule 會在對的時間提醒我們該做什麼。兩者結合後,小程式就不再只是冷冰冰的程式碼,而是能主動幫忙處理生活瑣事的小幫手。透過這些工具,我們讓程式變得更聰明、更貼近日常。相信之後我們能再加上 GUI 介面或串接 API,發展出一個更完整、更便利的提醒工具,真正融入生活。


上一篇
[Day21]一週回顧 & Kivy 工具初探
下一篇
[Day23]邊玩邊練打字!用 Python 做一個 Typing Game
系列文
軟體開發養成計畫:以小程式實作深化開發能力25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言