[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
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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程式