[Python教學] 日期時間

更新於 發佈於 閱讀時間約 16 分鐘

日期時間

python 日期時間

python 日期時間


時間日期在計算機科學和日常生活中都非常重要。下面是一些時間日期的基本概念和相關信息:

  1. 時間:時間是一個連續的概念,用來衡量事件發生的順序和持續的時間。時間通常以不同的單位來表示,包括秒、分鐘、小時、天、月和年等。
  2. 日期:日期是時間的一個特定點,通常包括年、月和日。日期用於確定事件或行動發生的具體時間。
  3. 時間戳記:時間戳記是一個數字或代碼,表示特定時刻或日期的瞬時值。在計算機科學中,它通常表示為從某一固定時間點(例如1970年1月1日)經過的秒數,這種表示方式稱為「Unix 時間戳記」。
  4. 時區:地球分為多個不同的時區,每個時區都有自己的標準時間。時區用來協調不同地區的時間,以便在全球范圍內統一時間表示。
  5. 日曆系統:不同的文化和地區使用不同的日曆系統,用來計算日期。一些常見的日曆系統包括格里高利曆(西曆)、夏威夷曆、伊斯蘭曆、農曆等。
  6. 日期和時間的表示:在計算機程式中,日期和時間通常以字符串或特殊的日期時間對象來表示。常見的日期和時間表示方式包括 ISO 8601 格式(例如 "2023-11-10" 表示2023年11月10日)、24小時制時間(例如 "15:30:00" 表示下午3點30分)等。
  7. 日期和時間的操作:在計算機程式中,您可以進行各種日期和時間的操作,包括計算日期之間的差值、格式化日期和時間、轉換不同時區的時間等。

這些是時間日期的一些基本概念和相關信息。在實際應用中,根據需要,您可以使用不同的工具和方法來處理日期和時間。

UTC 協調世界時

UTC(協調世界時)是一種全球性的標準時間,用於協調世界各地的時間。它是一個基於原子時鐘的時間標準,通常被視為世界上的參考時間。以下是有關UTC的一些重要信息:

  1. UTC 的含義
    • UTC 是一個不帶時區偏移的時間標準,也稱為GMT(格林尼治平均時間)的後繼者。
    • UTC 的名稱源自法語中的 "Temps Universel Coordonné",意思是"協調世界時"。
    • UTC 不考慮夏令時調整,因此它是穩定的,不會因夏令時變化而改變。
  2. UTC 的用途
    • UTC 通常用於全球性的時間標準,例如計算全球性的通信、科學實驗、航空和航海、計算時間間隔等。
    • 許多計算機系統和網絡通信協議使用UTC作為時間基準,以確保跨時區的一致性。
  3. UTC 的表示
    • UTC 的表示格式通常是以 "HH:MM:SS" 的形式表示,其中HH表示小時、MM表示分鐘、SS表示秒。
    • 日期和時間的結合可以使用 "YYYY-MM-DDTHH:MM:SS" 的格式,例如 "2023-11-10T15:30:00" 表示UTC時間的日期和時間。
  4. UTC 和時區
    • UTC 是一個統一的時間標準,不包括時區信息。它通常被視為時區的參考點。
    • 若要表示特定時區的時間,您需要將UTC時間轉換為該時區,並考慮該時區的時區偏移。
  5. UTC 的獲取
    • 您可以使用計算機或行動設備的系統時鐘獲取當前的UTC時間。
    • 在程式中,您可以使用相關的程式語言和庫來獲取和操作UTC時間。

UTC是全球性的時間標準,確保了全球範圍內的時間一致性。在許多情況下,特別是與跨時區的通信、科學實驗和計算機系統相關的應用中,UTC時間非常重要。

台灣位於UTC+8時區,也稱為台北標準時間(Taipei Standard Time,簡稱TST),或者又被稱為中華民國標準時間(ROC Standard Time),時區代號為「CST」。UTC+8表示台灣的時間比協調世界時(UTC)提前8小時,所以當UTC時間是中午12:00時,台灣的時間是晚上8:00時。台灣不遵循夏令時制度,所以在整年內都保持UTC+8時區。


Datetime 模組

datetime 模組是 Python 中用於處理日期和時間的標準庫模組。它提供了各種功能,允許您創建、操作和格式化日期時間物件。以下是 datetim 模組的主要功能和介紹:


日期和時間物件

datetime 模組定義了幾個重要的類別,包括 datetime.datedatetime.time 和 datetime.datetime。這些類別允許您分別表示日期、時間和日期時間。


創建日期時間物件

您可以使用 datetime 模組來創建日期時間物件,例如:

from datetime import datetime
# 創建一個表示當前日期時間的物件
now = datetime.now()
# datetime.datetime(2023, 11, 14, 9, 57, 23, 172582)


日期和時間格式化

datetime 模組允許您將日期時間物件格式化為字串,或將字串解析為日期時間物件。您可以使用strftime() 方法將日期時間格式化為字串。strptime() 方法將字串解析為日期時間物件。

from datetime import datetime

# 格式化日期時間為字串
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
# 2023-11-14 09:57:55

# 解析字串為日期時間物件
date_string = "2023-11-10 15:30:00"
parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
# datetime.datetime(2023, 11, 10, 15, 30)


日期時間運算

您可以執行日期時間的各種數學運算,如加法和減法,以計算日期時間的差值或在日期時間上進行操作。

from datetime import datetime, timedelta

# 計算未來某一天的日期
now = datetime.now()
# datetime.datetime(2023, 11, 14, 9, 58, 42, 120398)

future_date = now + timedelta(days=7)
# datetime.datetime(2023, 11, 21, 9, 58, 42, 120398)


時區支援

datetime 模組允許您處理時區相關的日期時間操作。

from datetime import datetime

# 獲取當前UTC時間
utc_now = datetime.utcnow()
datetime.datetime(2023, 11, 14, 1, 59, 18, 337317)

# 印出UTC時間
print("當前UTC時間:", utc_now)
# 當前UTC時間: 2023-11-14 01:59:18.337317


日期時間比較

您可以比較日期時間物件,以判斷哪個日期時間更早或更晚。

from datetime import datetime

# 比較日期時間物件
date1 = datetime(2023, 11, 10)
date2 = datetime(2023, 11, 15)

if date1 < date2:
print("date1 在 date2 之前")


獲取當前日期時間

您可以使用 datetime.now() 方法獲取當前的日期時間物件,以進行各種日期時間操作。

from datetime import datetime

# 獲取當前日期時間
now = datetime.now()


總之,datetime 模組為 Python 提供了強大的日期時間處理能力,可以方便地進行日期時間的創建、格式化、運算和比較等操作。這些功能使它在許多應用中都非常有用,包括時間戳記記錄、日曆應用程式、數據分析等。


常用方法

Datetime 常用方法

Datetime 常用方法

timedelta 時間差異

timedelta(時間差異)是 Python 中用於表示時間間隔的類別。它允許您執行日期和時間的數學運算,例如加法、減法和比較,用於處理時間間隔非常方便。以下是有關 timedelta 的重要資訊:

timedelta 物件

    • timedelta 是 datetime 模組中的一個類別,用於表示時間間隔。
    • 您可以使用 timedelta 物件表示一段時間的長度,例如幾天、幾小時、幾分鐘或幾秒。


創建 timedelta 物件

    • 您可以使用 timedelta 建構函式來創建 timedelta 物件,並指定要表示的時間間隔的各個組成部分,如天、小時、分鐘、秒等。
from datetime import timedelta

# 創建一個表示3天的時間間隔
delta = timedelta(days=3)
# datetime.timedelta(days=3)

# 創建一個表示2小時30分鐘的時間間隔
delta2 = timedelta(hours=2, minutes=30)
# datetime.timedelta(seconds=9000)


時間間隔運算

    • 您可以對 timedelta 物件執行各種數學運算,如加法和減法,以計算時間間隔的和或差。
from datetime import timedelta

# 創建兩個時間間隔物件
delta1 = timedelta(days=3)
delta2 = timedelta(days=2)

# 計算時間間隔的和
result = delta1 + delta2
# datetime.timedelta(days=5)

# 計算時間間隔的差
result2 = delta1 - delta2
# datetime.timedelta(days=1)


比較時間間隔

    • 您也可以比較 timedelta 物件,以判斷哪個時間間隔較長或較短。
pythonCopy code
from datetime import timedelta

delta1 = timedelta(days=3)
delta2 = timedelta(days=2)

if delta1 > delta2:
print("delta1 較長")


格式化輸出

    • 您可以將 timedelta 物件格式化為字串,以便以易讀的方式顯示時間間隔。
pythonCopy code
from datetime import timedelta

delta = timedelta(days=3, hours=2, minutes=30)
formatted = str(delta)
# '3 days, 2:30:00

timedelta 物件非常實用,可用於各種需要處理時間間隔的情況,例如計算日期之間的差異、計算任務的執行時間等。它是 Python 中處理時間間隔的標準工具。


參數說明

timedelta 參數說明

timedelta 參數說明



calendar 日曆

calendar 模組是 Python 中的標準庫之一,用於處理日期和時間相關的操作。它提供了各種與日曆和日期計算相關的函數和類別,允許您執行各種日期和時間操作。以下是有關 calendar 模組的一些介紹:


匯入 calendar 模組

    • 要使用 calendar 模組,首先需要匯入它:
import calendar


獲取日曆信息

    • calendar 模組允許您獲取各種有關日曆的信息,如某年某月的月曆、某年的年曆等。
    • 例如,您可以使用 calendar.month() 函數來獲取指定年份和月份的月曆:
import calendar

year = 2023
month = 11
cal = calendar.month(year, month)
print(cal)


日期範圍和工具函數

    • calendar 模組還提供了用於處理日期範圍和日期計算的工具函數,如 calendar.monthrange() 和 calendar.weekday() 等。
    • 例如,calendar.monthrange() 函數用於獲取指定年份和月份的第一天是星期幾以及該月的天數:
import calendar

year = 2023
month = 11
first_weekday, num_days = calendar.monthrange(year, month)
# first_weekday=2, num_days=30

這將返回第一天是星期幾(0 表示星期一,6 表示星期日)以及該月的天數。

常數

    • calendar 模組還定義了一些與日期和星期相關的常數,如星期一到星期日的名稱和月份的名稱等。
    • 例如,您可以使用 calendar.SUNDAYcalendar.MONDAY 等常數來表示星期幾。


calendar 模組在處理日期和時間方面是非常有用的工具,特別是在生成日曆、計算日期範圍和執行日期計算等任務時。通過結合使用 calendar 模組的函數和常數,您可以輕鬆執行各種日期和時間操作。


應用範例

以下是一個有趣的日期應用小遊戲,稱為「生日星期猜猜樂」。玩家需要猜測特定日期的星期,並檢查答案的正確性。

from datetime import datetime
import random

# 產生隨機的日期
def generate_random_date():
year = random.randint(1950, 2023)
month = random.randint(1, 12)
day = random.randint(1, 28) # 簡化起見,假設最大為28日
return datetime(year, month, day)

# 獲取日期的星期
def get_weekday(date):
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return weekdays[date.weekday()]

# 主要遊戲循環
def birthday_game():
print("歡迎來到生日星期猜猜樂!")
correct_answers = 0
total_questions = 5 # 您可以根據需要更改問題數量

for _ in range(total_questions):
random_date = generate_random_date()
print(f"請猜測 {random_date.year}{random_date.month}{random_date.day}日是星期幾:")
user_guess = input("輸入星期幾(例:星期一):")

correct_weekday = get_weekday(random_date)

if user_guess == correct_weekday:
print("正確答案!\n")
correct_answers += 1
else:
print(f"錯誤答案。正確答案是 {correct_weekday}。\n")

print(f"您在 {total_questions} 個問題中答對了 {correct_answers} 個問題!")

if __name__ == "__main__":
birthday_game()

遊戲會隨機生成日期,然後要求玩家猜測該日期是星期幾。玩家將在幾個問題中回答正確的次數,最終會得到一個分數。您可以根據需要自定義遊戲的難度和問題數量。這個小遊戲可以讓您玩得開心,同時也提供了練習猜測星期的機會。


結論

日期時間在平常資料處理很常使用到,內建提供的 Datetime、calendar 模組可以處理大部分的問題,在撰寫系統時,有時候時區也是很大的一個雷,尤其是你的系統是多國在使用,就需要更特別注意。

留言
avatar-img
留言分享你的想法!
avatar-img
何誠殷的沙龍
12會員
16內容數
最近當一個講師,把自己會的技能分享出去, 從平常工作就在使用的Python開始教學 我會陸續把資料分享上來,希望可以透過教學相長的方式,互相學習進步。 教學單元有Colab介紹與使用、ChatGPT助教、變數與資料型態、IF判斷式、List清單、For迴圈、字典與集合、函式與模組、Class類別與物件、標準函示庫與套件
何誠殷的沙龍的其他內容
2023/12/13
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
2023/12/13
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
2023/11/22
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
2023/11/22
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
2023/11/08
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
2023/11/08
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
日期時間 時間日期在計算機科學和日常生活中都非常重要。時間:時間是一個連續的概念,用來衡量事件發生的順序和持續的時間。時間通常以不同的單位來表示,包括秒、分鐘、小時、天、月和年等。日期:日期是時間的一個特定點,通常包括年、月和日。
Thumbnail
日期時間 時間日期在計算機科學和日常生活中都非常重要。時間:時間是一個連續的概念,用來衡量事件發生的順序和持續的時間。時間通常以不同的單位來表示,包括秒、分鐘、小時、天、月和年等。日期:日期是時間的一個特定點,通常包括年、月和日。
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 有時候我們在處理字幕檔或者是音訊時, 常常會計算時間這
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 有時候我們在處理字幕檔或者是音訊時, 常常會計算時間這
Thumbnail
網友提出一個PQ的需求,如下圖。 針對這個需求稍微做個解釋,資料中有日期、品項、數值,要將日期變成月份,並且與品項一同分析,將所有數值加總起來,如下圖。 這題其實方法有很多種,可以用函數(365、非365)、樞紐、PQ都能做到,我們就來看看這幾種方法如何做到的吧! 函數法(非365) 非
Thumbnail
網友提出一個PQ的需求,如下圖。 針對這個需求稍微做個解釋,資料中有日期、品項、數值,要將日期變成月份,並且與品項一同分析,將所有數值加總起來,如下圖。 這題其實方法有很多種,可以用函數(365、非365)、樞紐、PQ都能做到,我們就來看看這幾種方法如何做到的吧! 函數法(非365) 非
Thumbnail
Python time模組是一個提供時間相關功能的模組,可以用來獲取當前時間、格式化時間、延遲執行、測量執行時間等,今天將介紹time模組的常用函數和用法。   1. 獲取當前時間 time模組提供了多種獲取當前時間的函數,例如: time.time():返回當前時間的時間戳,即從1970
Thumbnail
Python time模組是一個提供時間相關功能的模組,可以用來獲取當前時間、格式化時間、延遲執行、測量執行時間等,今天將介紹time模組的常用函數和用法。   1. 獲取當前時間 time模組提供了多種獲取當前時間的函數,例如: time.time():返回當前時間的時間戳,即從1970
Thumbnail
“數學中可能沒有任何符號像數字 pi 那樣引起如此多的神秘、浪漫主義、誤解和人類興趣”-William L. Schaaf,<Pi 的自然與歷史> 自古人們便認為"圓"是一種神性的存在。印地安人做的每件事都在一個圓內, 因為世界的力量總是在圓內運轉, 而且每一件事總想試著變成圓形。 即使是季節的更
Thumbnail
“數學中可能沒有任何符號像數字 pi 那樣引起如此多的神秘、浪漫主義、誤解和人類興趣”-William L. Schaaf,<Pi 的自然與歷史> 自古人們便認為"圓"是一種神性的存在。印地安人做的每件事都在一個圓內, 因為世界的力量總是在圓內運轉, 而且每一件事總想試著變成圓形。 即使是季節的更
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News