Python 日期時間:帶示例的綜合指南

Python 日期時間:帶示例的綜合指南

在 Python 中處理數據項目時,您最有可能使用日期時間函數。您將使用的幾乎每個數據集都會有一個日期時間列,您將希望根據您的需要和項目要求對其進行操作。

幸運的是,Python 帶有自己的名為datetime的內置模塊,允許您使用 datetime 實例表示、操作和執行操作,例如日期、時間和兩者的組合。掌握 Python 日期時間模塊將幫助您在項目中進行更穩健的時間序列分析。

Python datetime 模塊是一個用於處理日期、時間和時間間隔的工具。它允許您以直接的方式對日期和時間執行各種操作。

Python 日期時間:帶示例的綜合指南

編程摘要 — 軟件開發人員展示的源代碼和二進制代碼。帶有彩色語法的黑色主題。

通過使用Python中的 datetime 模塊,您可以輕鬆處理日期和時間值、管理時區、執行計算,甚至處理各種表示形式的格式設置和解析。此功能使 datetime 模塊成為許多應用程序中必不可少的工具,從數據處理到事件調度等等。

在開始在項目中使用 Python 的 datetime 模塊之前,了解其底層類至關重要。在下面的部分中,我們將了解 Python 的 DateTime 模塊的五個主要類。讓我們開始吧!

目錄

Python 日期時間模塊的 5 個主要類是什麼?

Python Datetime 模塊是標準庫的一部分,它提供了用於操作和處理日期、時間、時區和持續時間的類。

該模塊由五個主要類組成:

  1. 約會時間

  2. 日期,

  3. 時間,

  4. 時間增量

  5. 時區。

    我們將查看每個類,然後查看示例用例,以幫助您更好地理解這個概念。

如何使用 Datetime 類

Python Datetime 類是模塊中最常用的類。它表示具有年、月、日、小時、分鐘、秒和微秒等屬性的單個時間點。

Python Datetime 類的一些常見操作包括:

  • 日期時間.日期時間.now()

此函數允許您獲取當前日期和時間。以下是檢索當前日期和時間的示例:

import datetime

# Get the current date and time
now = datetime.datetime.now()

print("Current date and time: ", now)

這將以 YYYY-MM-DD HH:MM:SS.ssssss 格式輸出執行時的當前日期和時間。

Python 日期時間:帶示例的綜合指南

  • 日期時間.日期時間

此函數允許您創建自定義日期和時間對象。以下是在您的代碼中使用 datetime.datetime 的示例:

from datetime import date

# Create a custom date and time object
custom_date = datetime.datetime(2023, 5, 22, 17, 40)

print("Custom date and time: ", custom_date)

除了上述功能外,Datetime 類還提供了處理日期和時間的方法,例如:

Python 日期時間:帶示例的綜合指南

  • 時間()

該方法允許您將日期和時間對象格式化為字符串。以下是 strftime() 方法的示例:

import datetime

# Create a custom date and time object
custom_date = datetime.datetime(2023, 5, 22, 17, 40)

# Format the datetime object as a string
formatted_date = custom_date.strftime("%B %d, %Y, %H:%M")

print("Formatted date and time: ", formatted_date)

此代碼會將日期時間對象轉換為字符串:

Python 日期時間:帶示例的綜合指南

  • 時間()

datetime 類中的此函數允許您將表示日期和時間對象的字符串解析為單個 Datetime 對象。以下是將存儲為字符串的日期解析為 Datetime 對象的示例:

import datetime

# String representing a date and time
date_string = "May 22, 2023, 17:40"

# Parse the string into a datetime object
parsed_date = datetime.datetime.strptime(date_string, "%B %d, %Y, %H:%M")

print("Parsed date and time: ", parsed_date)

這會將字符串轉換為 DateTime 對象。

Python 日期時間:帶示例的綜合指南

如何使用日期類

Date 類允許您專門處理日期對象(年、月和日)。您可以使用日期類創建日期對象。

Date 類的一些常見操作包括:

  • 日期時間.日期.今天()

日期類中的此函數允許您獲取當前日期。以下是使用日期類檢索當前日期的示例:

import datetime

# Get the current date
today = datetime.date.today()

print("Today's date: ", today)

此 Python 代碼將以 YYYY-MM-DD 格式輸出執行時的當前日期。

Python 日期時間:帶示例的綜合指南

在撰寫本文時,當前日期是 2023 年 5 月 22 日。

  • 日期時間.date()

日期類中的此函數允許您創建日期對象。該示例演示了使用 datetime.date() 函數創建自定義日期對象:

import datetime

# Create a custom date object
custom_date = datetime.date(2023, 5, 22)

print("Custom date: ", custom_date)

在 datetime.date() 函數中,您提供年、月和日作為參數。

該腳本將輸出 2023-05-22,因為您已經為日期 2023 年 5 月 22 日創建了自定義日期對象。

Python 日期時間:帶示例的綜合指南

Date 類還提供了一些有用的方法,例如:

  • 工作日()

日期類中的此方法返回星期幾(0 表示星期一,1 表示星期二,等等)。以下示例演示了 weekday() 方法:

import datetime

# Create a custom date object
custom_date = datetime.date(2023, 5, 22)

# Get the day of the week
day_of_week = custom_date.weekday()

print("Day of the week: ", day_of_week)

在此示例中,custom_date.weekday() 將返回 0,因為 2023 年 5 月 22 日是星期一。

Python 日期時間:帶示例的綜合指南

  • 時間()

日期類中的此方法允許您將日期對象格式化為字符串。以下示例演示了 strftime() 函數:

import datetime

# Create a custom date object
custom_date = datetime.date(2023, 5, 22)

# Format the date object as a string
formatted_date = custom_date.strftime("%B %d, %Y")

print("Formatted date: ", formatted_date)

這將輸出格式為“Month day, Year”的日期。

Python 日期時間:帶示例的綜合指南

  • 時間()

此方法允許您將表示日期的字符串解析為 Date 對象。以下是將字符串日期轉換為 Date 對象的示例:

import datetime

# String representing a date
date_string = "May 22, 2023"

# Parse the string into a date object
parsed_date = datetime.datetime.strptime(date_string, "%B %d, %Y").date()

print("Parsed date: ", parsed_date)

這將輸出從日期字符串創建的日期對象。

Python 日期時間:帶示例的綜合指南

如何使用時間類

Time 類允許您使用時間實例(小時、分鐘、秒、微秒)。使用時間類,您可以使用datetime.time() 創建自定義時間對象。

以下示例演示了創建自定義時間對象:

import datetime

# Create a custom time object
custom_time = datetime.time(17, 40)

print("Custom time: ", custom_time)

在 datetime.time()函數中,您提供小時和分鐘作為參數。

此腳本將輸出 17:40:00,如 Python 代碼中指定的那樣。

Python 日期時間:帶示例的綜合指南

Time 類提供了有用的方法,例如:

  • 時間()

此方法允許您將時間對象格式化為字符串。下面是這個函數的一個例子:

import datetime

# Create a custom time object
custom_time = datetime.time(17, 40)

# Format the time object as a string
formatted_time = custom_time.strftime("%H:%M")

print("Formatted time: ", formatted_time)

這將輸出格式為“小時:分鐘”的本地時間。

Python 日期時間:帶示例的綜合指南

  • 時間()

此函數允許您將表示時間的字符串解析為 Time 對象。以下示例演示了此功能:

from datetime import time

# String representing a time
time_string = "17:40"

# Parse the string into a time object
parsed_time = datetime.datetime.strptime(time_string, "%H:%M").time()

print("Parsed time: ", parsed_time)

這將輸出從時間字符串創建的時間對象。

Python 日期時間:帶示例的綜合指南

How to Use The Timedelta Class

The Timedelta class allows you to represent represents a duration or difference between two dates or times.

With Timedelta class, you can perform the following operations:

  • Calculate the difference between two dates or times

An example of calculating the difference between two dates is given below:

 import datetime

# Create two custom date objects
date1 = datetime.date(2023, 5, 22)
date2 = datetime.date(2023, 6, 1)

# Calculate the difference between the two dates
date_difference = date2 - date1

print("Difference between the dates is: ", date_difference.days, "days")

In this example, date_difference is a timedelta object representing the difference between date2 and date1. The .days property gives the number of days between the two dates.

Python 日期時間:帶示例的綜合指南

  • Add or subtract a duration to a date or time

An example of adding a duration to a date is given below:

import datetime

# Create a custom date object
custom_date = datetime.date(2023, 5, 22)

# Create a duration of 10 days
duration = datetime.timedelta(days=10)

# Add the duration to the date
new_date = custom_date + duration

print("New date: ", new_date)

In this example, duration is a timedelta object representing a duration of 10 days. We use the + operator to add this duration to custom_date.

Python 日期時間:帶示例的綜合指南

How to Use the Timezone Class

The Timezone class allows you to handle time zones and daylight saving time adjustments.

您可以使用時區類執行以下操作:

  • 創建時區對象

要創建時區對象,您可以使用datetime.timezone()函數以下示例演示了創建時區對象:

import datetime

# Create a timezone object for a timezone 2 hours ahead of UTC
two_hours_ahead = datetime.timezone(datetime.timedelta(hours=2))

print("Timezone object: ", two_hours_ahead)

在此示例中,two_hours_ahead 是一個時區對象,表示比協調世界時 (UTC) 提前 2 小時的時區。

該腳本將輸出一個時區對象,如 .

Python 日期時間:帶示例的綜合指南

  • 具有特定時區的對象

為此,您可以使用 . 替換(tzinfo=tz)函數。以下示例演示了此功能:

import datetime

# Create a naive datetime object
naive_datetime = datetime.datetime(2023, 5, 22, 17, 40)

# Create a timezone object for a timezone 2 hours ahead of UTC
two_hours_ahead = datetime.timezone(datetime.timedelta(hours=2))

# Convert the naive datetime object to an aware object
aware_datetime = naive_datetime.replace(tzinfo=two_hours_ahead)

print("Aware datetime object: ", aware_datetime)

在此示例中,naive_datetime 是一個沒有任何時區信息的日期時間對象。two_hours_ahead 變量是一個時區對象,表示比 UTC 早 2 小時的時區。

replace(tzinfo=two_hours_ahead) 方法用於創建一個新的 datetime 對象,其日期和時間與 naive_datetime 相同,但 tzinfo 設置為 two_hours_ahead。

Python 日期時間:帶示例的綜合指南

在處理跨多個時區的數據時,時區可幫助您保持準確和一致的時間值。

您已經了解了Python 中 datetime 模塊中的一些最重要的函數。在下一節中,我們將在案例研究中實現上述一些功能,這將使您實際了解這些日期時間模塊在您的項目中的實現。

將 DateTime 模塊函數實現到案例研究

讓我們考慮一個案例研究,其中我們獲得了世界各地發生的不同事件的數據集。數據集具有字符串格式的相應日期和時間。

我們的任務是將這些日期和時間轉換為 DateTime 對象,並根據需要對其進行操作。

假設我們有以下數據集:

Python 日期時間:帶示例的綜合指南

如果我們檢查變量的數據類型,我們將看到日期和時間存儲為字符串。因此,在進行任何分析之前,我們必須將日期和時間列轉換為合適的格式。

為此,我們可以使用以下代碼:

import datetime

# Convert 'Date' and 'Time' strings into datetime objects
df['DateTime'] = df['Date'] + ' ' + df['Time']
df['DateTime'] = df['DateTime'].apply(lambda x: datetime.datetime.strptime(x, "%b %d, %Y %H:%M"))

print(df)

在此代碼塊中,我們首先通過連接“日期”和“時間”列在您的 DataFrame 中創建一個新列“DateTime”。然後,我們將 datetime.strptime 函數應用於此新列中的每個值,以將日期和時間字符串轉換為 datetime 對象。最後,我們打印出 DataFrame 來查看結果。

Python 日期時間:帶示例的綜合指南

接下來我們要做的是計算兩個事件之間的差異。為此,我們可以使用以下代碼:

duration = df.loc[1, 'DateTime'] - df.loc[0, 'DateTime']
print("Duration between Event1 and Event2: ", duration)

此 Python 腳本將計算“Event1”和“Event2”之間的持續時間。

Python 日期時間:帶示例的綜合指南

最後,讓我們將日期時間對象轉換為不同的時區。什麼時候可以使用 datetime 模塊中的 Timezone 函數實現此目的。

# Create a timezone object for UTC
utc_tz = datetime.timezone(datetime.timedelta(0))

# Convert the datetime objects into UTC
df['DateTime_UTC'] = df['DateTime'].apply(lambda x: x.replace(tzinfo=utc_tz))

print(df)

在此代碼中,我們為 UTC 創建了一個時區對象。接下來,我們通過將 lambda 函數應用於“DateTime”列,在 DataFrame 中創建一個名為“DateTime_UTC”的新列。這會將每個日期時間對象的時區信息替換為 UTC。

Python 日期時間:帶示例的綜合指南

通過上面的示例案例研究,您可以了解 DateTime 模塊提供的各種功能如何協同工作以將日期和時間操作為合適的格式。

現在您已經熟悉了 datetime 模塊中的一些函數,讓我們繼續看一些您在處理更複雜的項目時需要使用的附加函數。

除了上面列出的功能外,您還可以根據手頭的問題使用更多有用的功能。Python 開發人員通常會打開一個文檔頁面來查找可以滿足您需求的函數。我們建議您也這樣做!

附加日期和時間函數

在本節中,我們將討論 Python日期時間模塊中的其他功能。這包括檢索工作日、月份和工作日名稱,以及ctime()函數。

如何從日期中檢索工作日

datetime模塊帶有一個weekday()函數,它以整數形式返回星期幾(其中星期一為 0,星期日為 6)。

要使用此函數,您可以在日期或日期時間對像上調用它。

import datetime

today = datetime.date.today()
weekday_number = today.weekday()

print(weekday_number)

上面代碼的輸出如下圖所示:

Python 日期時間:帶示例的綜合指南

當前本地日期是 5/23/2023,工作日是星期一。

如何從日期中檢索月份和工作日名稱

datetime還允許您檢索月份名稱和星期幾。

您可以使用strftime()函數,它將日期或日期時間對象格式化為字符串。

以下是如何使用strftime()函數獲取月份名稱和星期幾的示例:

import datetime

today = datetime.date.today()
weekday_name = today.strftime('%A')
month_name = today.strftime('%B')

print(weekday_name)
print(month_name)

此代碼將在輸出中打印工作日名稱和月份名稱。

Python 日期時間:帶示例的綜合指南

如何使用 Ctime 函數

datetime模塊中的 ctime() 函數返回日期或日期時間對象的字符串表示形式,格式為“Day Mon DD HH:MM:SS YYYY”。

ctime是datetime對象的一種方法,而不是一個獨立的函數。

以下是在您的代碼中使用 ctime 函數的示例:

import datetime

now = datetime.datetime.now()
formatted_date = now.ctime()

print(formatted_date)

上面的代碼將返回日期對象的字符串表示形式。

Python 日期時間:帶示例的綜合指南

要了解有關使用時間序列數據的更多信息,請觀看以下視頻:

最後的想法

作為一名 Python 程序員,掌握 datetime 模塊很重要。它是一個工具包,使您能夠處理日期、時間和時間間隔。這些是您在真實數據中經常遇到的元素。

您將需要此模塊將字符串轉換為日期時間對象、處理時區轉換以及對日期和時間執行操作。

通過學習如何使用 datetime 模塊,您將更好地準備在自己的項目中處理這些任務!


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的