Python 基本日期和時間型別
在 Python 中操作日期和時間,可以使用名為 datetime 的模組。日期和時間物件有兩種型別。型別分別是樸素型別和感知型別。
在樸素物件中,沒有足夠的資訊來明確地將此物件與其他日期時間物件區分開來。在這種方法中,它使用協調世界時 (UTC)。
在感知型別物件中,包含有關演算法和政治時間調整的不同資訊。此型別的物件用於表示某些特定的時間點。
要使用此模組,我們應該使用以下方法匯入它:
import datetime
此模組中包含不同的類、常量和方法。
常量如下:
| 序號 | 常量及描述 |
|---|---|
| 1 | datetime.MINYEAR 它是可以應用於日期或日期時間物件的最小年份數。值為 0。 |
| 2 | datetime.MAXYEAR 它是可以應用於日期或日期時間物件的最大年份數。值為 9999。 |
可用的資料型別如下:
| 序號 | 資料型別及描述 |
|---|---|
| 1 | date 它是日期型別物件。它使用公曆。它具有年份、月份、日期屬性。 |
| 2 | time 它是一個時間物件類。它獨立於任何特定的一天。它具有小時、分鐘、秒、微秒和 tzinfo 屬性。 |
| 3 | datetime 它是日期和時間的組合集合。 |
| 4 | timedelta 它用於表示兩個日期、時間或日期時間值之間的毫秒差。 |
| 5 | tzinfo 它是一個抽象基類。它儲存時區資訊。它被 datetime 和 time 類使用。 |
| 6 | timezone 在此類中,它實現了 tzinfo。它與 UTC 有一個固定的偏移量。 |
日期型別物件
日期物件表示一個日期。在日期中,有日期、月份和年份部分。它使用公曆。根據此日曆,第 1 年 1 月 1 日稱為第 1 天,依此類推。
一些與日期相關的函式如下:
函式 date.date(year, month, day)
這是建立日期型別物件的建構函式。要建立日期,所有引數都必須是整數型別資料。年份必須在 MINYEAR 和 MAXYEAR 範圍內。如果給定的日期無效,它將引發 ValueError 異常。
函式 date.today()
此函式用於返回當前本地日期。
函式 date.fromtimestamp(timestamp)
此函式用於從 POSIX 時間戳獲取日期。如果時間戳值超出範圍,它將引發 OverflowError 異常。
函式 date.fromordinal(ordinal)
此函式用於從前推格里高利曆序數獲取日期。它用於從第 1 年 1 月 1 日起的日期計數獲取日期。
函式 date.toordinal()
此函式用於將日期返回到前推格里高利曆序數。
函式 date.weekday()
此函式用於從日期返回一週中的日期作為整數。星期一為 0,星期二為 1,依此類推。
函式 date.isoformat()
此函式用於以 ISO 8601 格式字串返回日期。格式為 YYYY-MM-DD。
示例程式碼
import datetime as dt
new_date = dt.date(1998, 9, 5) #Store date 5th septemberm, 1998
print("The Date is: " + str(new_date))
print("Ordinal value of given date: " + str(new_date.toordinal()))
print("The weekday of the given date: " + str(new_date.weekday())) #Monday is 0
my_date = dt.date.fromordinal(732698) #Create a date from the Ordinal value.
print("The Date from ordinal is: " + str(my_date))
td = my_date - new_date #Create a timedelta object
print('td Type: ' + str(type(td)) + '\nDifference: ' + str(td))
輸出
The Date is: 1998-09-05 Ordinal value of given date: 729637 The weekday of the given date: 5 The Date from ordinal is: 2007-01-22 td Type: <class 'datetime.timedelta'> Difference: 3061 days, 0:00:00
時間物件
時間物件表示本地時間。在時間中,有小時、分鐘、秒、微秒、tzinfo 部分。小時範圍為 0 到 24,分鐘和秒範圍為 0 到 60,微秒範圍為 0 到 1000000。
一些與時間相關的函式如下
函式 time.fromisoformat(time_string)
此函式用於從 ISO 8601 字串獲取時間。它可以獲取 time.isoformat() 函式的任何輸出。
函式 time.replace(hour = self.hour, minute = self.minute, second = self.second, microsecond = self.microseconds, tzinfo = self.tzinfo, *fold=0)
此函式用於透過從引數獲取值來返回時間。如果沒有傳遞引數,它將返回相同的時間物件值。
函式 time.tzname()
此函式用於返回時區名稱。如果 tzinfo 為 None,它將返回 None。
日期時間物件
日期時間物件同時儲存日期和時間。作為日期物件,它支援公曆;作為時間物件,它每天精確儲存 3600*24 秒。
它支援所有與日期和時間相關的函式,一些函式也存在於 datetime 中。例如:
函式 datetime.now(tz=None)
此函式用於獲取當前日期和時間。如果 tz 不存在或為 None,則它將返回類似於 today() 函式的日期。
函式 datetime.utcnow()
此函式用於獲取當前 UTC 日期和時間相關資訊。
還有另外兩個函式稱為 strftime() 和 strptime()。這些函式適用於日期和時間物件以及日期時間物件。
函式 datetime.strftime(format[, t])
strftime() 函式將表示時間的元組或 struct_time(由 gmtime() 或 localtime() 返回)轉換為由 format 引數指定的字串。如果未提供 t,則使用 localtime() 返回的當前時間。format 必須是字串。如果 t 中的任何欄位超出允許範圍,則會引發 ValueError 異常。
函式 datetime.strftime(format[, t])
strptime() 函式根據格式解析表示時間的字串。返回值是 gmtime() 或 localtime() 返回的 struct_time。format 引數使用與 strftime() 使用的相同的指令;它預設為“%a %b %d %H:%M:%S %Y”,這與 ctime() 返回的格式匹配。
這兩個函式使用一些指令。其中一些列出如下:
| 序號 | 指令及描述 |
|---|---|
| 1 |
%A 完整星期名稱 |
| 2 | %B 完整月份名稱 |
| 3 | %d 月份中的日期(0 到 31) |
| 4 | %S 秒 |
| 5 | %G 4 位年份,對應於 ISO 週數 |
| 6 | %m 月份(1 到 12) |
| 7 | %M 分鐘 |
| 8 | %T 當前時間,等於 %H:%M:%S |
| 9 | %W 當前年份的週數,從第一個星期一的第一個星期開始 |
| 10 | %w 一週中的日期作為十進位制數,星期日=0 |
| 11 | %Y 包括世紀的年份 |
| 12 | %Z 或 %z 時區或名稱或縮寫 |
示例程式碼
import datetime as dt
my_date1 = dt.datetime(2015, 1, 4) #Storing the date 4th Jan, 2015
print(my_date1)
print('The Weekday of that day was: ' + my_date1.strftime('%A'))
my_date2 = dt.datetime.strptime('August-15-2017', '%B-%d-%Y') #Storing the date 15th Aug, 2017
print(my_date2)
print('The Weekday of that day was: ' + my_date2.strftime('%A'))
print('The difference between two days: ' + str(abs(my_date1 - my_date2)))
輸出
2015-01-04 00:00:00 The Weekday of that day was: Sunday 2017-08-15 00:00:00 The Weekday of that day was: Tuesday The difference between two days: 954 days, 0:00:00
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP