[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 模組可以處理大部分的問題,在撰寫系統時,有時候時區也是很大的一個雷,尤其是你的系統是多國在使用,就需要更特別注意。

12會員
16內容數
最近當一個講師,把自己會的技能分享出去, 從平常工作就在使用的Python開始教學 我會陸續把資料分享上來,希望可以透過教學相長的方式,互相學習進步。 教學單元有Colab介紹與使用、ChatGPT助教、變數與資料型態、IF判斷式、List清單、For迴圈、字典與集合、函式與模組、Class類別與物件、標準函示庫與套件
留言0
查看全部
發表第一個留言支持創作者!
何誠殷的沙龍 的其他內容
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
例外處理 在Python中,try 和 except 是用來處理異常的關鍵字。它們讓你能夠在代碼中檢測和處理可能引發異常的情況,以確保程序在遇到問題時不會崩潰,而是能夠優雅地處理錯誤情況。 基本用法,以下是 try 和 except 的基本用法: try: # 可能引發異常的代碼 excep
Class 類別 想像一下,假如我們要做一個有關食譜和食物的程式。首先,什麼是食譜呢?食譜是一個告訴我們如何做一道菜的指南,裡面會寫著需要的材料和做法。這就像是一個「類別」,它定義了一種事物的特性和行為。
Function函示 想像一個特別的工廠,叫做「點心工廠」。 這個工廠可以製作各種美味的點心,比如餅乾、蛋糕、糖果等等。 每種點心都有不同的味道和形狀。 在這個比喻中,我們可以把「點心工廠」想像成是一個函式,而工廠製作的各種點心就是函式可以執行的事情。
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
例外處理 在Python中,try 和 except 是用來處理異常的關鍵字。它們讓你能夠在代碼中檢測和處理可能引發異常的情況,以確保程序在遇到問題時不會崩潰,而是能夠優雅地處理錯誤情況。 基本用法,以下是 try 和 except 的基本用法: try: # 可能引發異常的代碼 excep
Class 類別 想像一下,假如我們要做一個有關食譜和食物的程式。首先,什麼是食譜呢?食譜是一個告訴我們如何做一道菜的指南,裡面會寫著需要的材料和做法。這就像是一個「類別」,它定義了一種事物的特性和行為。
Function函示 想像一個特別的工廠,叫做「點心工廠」。 這個工廠可以製作各種美味的點心,比如餅乾、蛋糕、糖果等等。 每種點心都有不同的味道和形狀。 在這個比喻中,我們可以把「點心工廠」想像成是一個函式,而工廠製作的各種點心就是函式可以執行的事情。
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。
Thumbnail
Python 是一個易於學習且功能強大的高級程式語言,它廣泛用於軟件開發、數據科學、人工智能和網站開發等領域。本教學將帶您入門 Python,讓您了解基本語法和常用功能。讓我們開始吧!
Thumbnail
在 Python 中,List、Set、Tuple 和 Dictionary 都是常用的資料結構,它們各自具有不同的特性和用途,在本篇學習筆記中,我們將比較這四種資料結構,介紹它們的特點、用法以及適用的場景,幫助你更好地理解它們的差異和選擇適當的資料結構。
Thumbnail
你一定有玩過猜拳遊戲,但你知道怎麼用Python寫一個猜拳遊戲嗎?今天我要分享一個簡單又好玩的程式碼,讓你可以和電腦對戰! 首先,我們要導入random模組,這個模組可以讓我們隨機生成一個數字,代表電腦出的拳。 然後,我們要用input函數讓使用者輸入自己出的拳,0代表剪刀,1代表石頭,2代表
Thumbnail
在上一篇我們教學了如何爬取歷年股利資訊,今天我們就來爬取更多的資訊,這次是要爬取個股同業比較的資訊,但這次不再跟之前一樣,只是單純的爬蟲而已,因為這次我們遇到了「需要登入」才能拿到的資訊,我們就來看看要如何爬取吧!!
Thumbnail
該篇文章首要為 1.下載python與文字編輯器vs code (Visual Studio Code) 2.撰寫第一支python程式
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。
Thumbnail
Python 是一個易於學習且功能強大的高級程式語言,它廣泛用於軟件開發、數據科學、人工智能和網站開發等領域。本教學將帶您入門 Python,讓您了解基本語法和常用功能。讓我們開始吧!
Thumbnail
在 Python 中,List、Set、Tuple 和 Dictionary 都是常用的資料結構,它們各自具有不同的特性和用途,在本篇學習筆記中,我們將比較這四種資料結構,介紹它們的特點、用法以及適用的場景,幫助你更好地理解它們的差異和選擇適當的資料結構。
Thumbnail
你一定有玩過猜拳遊戲,但你知道怎麼用Python寫一個猜拳遊戲嗎?今天我要分享一個簡單又好玩的程式碼,讓你可以和電腦對戰! 首先,我們要導入random模組,這個模組可以讓我們隨機生成一個數字,代表電腦出的拳。 然後,我們要用input函數讓使用者輸入自己出的拳,0代表剪刀,1代表石頭,2代表
Thumbnail
在上一篇我們教學了如何爬取歷年股利資訊,今天我們就來爬取更多的資訊,這次是要爬取個股同業比較的資訊,但這次不再跟之前一樣,只是單純的爬蟲而已,因為這次我們遇到了「需要登入」才能拿到的資訊,我們就來看看要如何爬取吧!!
Thumbnail
該篇文章首要為 1.下載python與文字編輯器vs code (Visual Studio Code) 2.撰寫第一支python程式