十二、Python 日期時間datetime模組詳細使用

1、datetime模組:日期包含年、月、日、小時、分鐘、秒和微秒。datetime 模組有許多方法可以返回有關日期物件的資訊。一般操作就是獲取時間是哪年哪月什麼時間端,處於那個時區範圍,幾個操作時間之間的間隔是多少等等。

2、datetime模組定義了5個類:

序號

含義

1

datetime。datetime

表示日期時間的類

2

datetime。timedelta

表示時間間隔,即兩個時間點的間隔

3

datetime。date

表示日期的類

4

datetime。time

表示時間的類

5

datetime。tzinfo

時區的相關資訊

其中:1完全可以理解時3和4的整合。

x_today = datetime。datetime。today() # 當前本地時間的datetime物件

print(x_today)

# 結果顯示2021-11-12 19:14:53。984157

x = datetime。datetime。now() # 獲取當前本地時間的datetime物件,如果提供了引數tz,則獲取tz引數所指時區的本地時間

print(x)

# 結果顯示2021-11-12 19:14:53。984157

x_utcnow = datetime。datetime。utcnow() # 當前utc時間的datetime物件

print(x_utcnow)

# 結果顯示2021-11-12 14:22:44。318067

x_utcTStamp = datetime。datetime。utcfromtimestamp(2021 - 11 - 12 - 22 - 9 - 24) # 根據時間戮建立一個datetime物件

print(x_utcTStamp)

# 結果顯示1970-01-01 00:32:23

print(x。date()) # 獲取當前日期

# 結果顯示2021-11-12

print(x。year) # 獲取當前日期——年份

# 結果顯示2021

print(x。month) # 獲取當前日期——月份

# 結果顯示11

print(x。day) # 獲取當前日期——那一天

# 結果顯示12

print(x。hour) # 獲取當前日期——小時

# 結果顯示19

print(x。minute) # 獲取當前日期——分鐘

# 結果顯示14

print(x。second) # 獲取當前日期——秒

# 結果顯示53

print(x。microsecond) # 獲取當前日期——微秒

# 結果顯示984157

print(x。tzinfo)

# 結果顯示None

print(x。now()) # 獲取當前時間

# 結果顯示2021-11-12 19:14:53。984157

print(x。isocalendar()) # 獲取當前(年份、週數、工作日)的元組

# 結果顯示(2021, 45, 5)

print(x。time()) # 獲取當前時間-時:分:秒

# 結果顯示19:14:53。984157

print(x。weekday())

# 結果顯示4

print(x。isoweekday()) # 獲取當前工作日-星期幾

# 結果顯示5

print(x。max) # 獲取最大日期時間

# 結果顯示9999-12-31 23:59:59。999999

print(x。min) # 獲取最小日期時間

# 結果顯示0001-01-01 00:00:00

print(x。resolution) # 獲取日期時間的最小單位

# 結果顯示0:00:00。000001

print(x。timetuple()) # 返回日期對應的time。struct_time物件

# 結果顯示time。struct_time(tm_year=2021, tm_mon=11, tm_mday=13, tm_hour=10, tm_min=16, tm_sec=33, tm_wday=5, tm_yday=317, tm_isdst=-1)

print(x。utctimetuple()) # 返回日期對應utc的time。struct_time物件

# 結果顯示time。struct_time(tm_year=2021, tm_mon=11, tm_mday=13, tm_hour=10, tm_min=17, tm_sec=46, tm_wday=5, tm_yday=317, tm_isdst=0)

print(x。toordinal())

# 結果顯示738107

print(x。isoformat()) # 返回根據 ISO 格式化的時間

# 結果顯示2021-11-13T10:23:57。006094

print(x。ctime()) #返回一個日期時間的C格式字串,等效於time。ctime(time。mktime(dt。timetuple()))

# 結果顯示Sat Nov 13 10:26:04 2021

print(x。strftime(‘%S-%M-%H %d-%m-%Y’)) #返回自定義格式化字串

# 結果顯示31-30-10 13-11-2021

x2 = datetime。date。today() # 返回一個表示當前本地日期的date物件

print(x2)

# 結果顯示2021-11-12

print(x2。year) # 獲取最大日期範圍

# 結果顯示2021

print(x2。month) # 獲取最大日期範圍

# 結果顯示11

print(x2。day) # 獲取最大日期範圍

# 結果顯示12

print(x2。weekday()) # 獲取當前工作日-星期幾

# 結果顯示4

print(x2。isoweekday()) # 獲取當前工作日-星期幾

# 結果顯示5

print(x2。isocalendar()) # 獲取當前(年份、週數、工作日)的元組

# 結果顯示(2021, 45, 5)

print(x2。isoformat()) # 返回格式如‘YYYY-MM-DD’的字串

# 結果顯示2021-11-12

print(x2。strftime(’%Y——%m——%d‘)) # 自定義格式化字串

# 結果顯示2021——11——12

print(x2。max) # 獲取最大日期範圍

# 結果顯示9999-12-31

print(x2。min) # 獲取最小日期範圍

# 結果顯示0001-01-01

print(x2。resolution) # 日期的最小單位——天

# 結果顯示1 day, 0:00:00

x2x = x2。replace(2035,10,10) # 生成一個新的日期物件,用引數指定的年,月,日代替原有物件中的屬性。(原有物件仍保持不變)

print(x2x)

# 結果顯示2035-10-10

print(x2)

# 結果顯示2021-11-12

print(x2x。toordinal()) # 返回日期對應的Gregorian Calendar日期

# 結果顯示743186

x_time = x2。timetuple() # 返回日期對應的time。struct_time物件

print(x_time)

# 結果顯示time。struct_time(tm_year=2021, tm_mon=11, tm_mday=13, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=317, tm_isdst=-1)

print(x_time[1])

# 結果顯示11

x4 = datetime。time(12, 23, 34, tzinfo=None)

print(x4) # 獲取指定時間類物件

# 結果顯示12:23:34

print(x4。hour)

# 結果顯示12

print(x4。minute)

# 結果顯示23

print(x4。second)

# 結果顯示34

print(x4。microsecond)

# 結果顯示0

print(x4。tzinfo) # 獲取時區資訊

# 顯示結果None

print(x4。tzname()) # 返回時區名稱

# 顯示結果None

print(x4。min) # 獲取時間類範圍內的——最小時間

# 結果顯示00:00:00

print(x4。max) # 獲取時間類範圍內的——最大時間

# 結果顯示23:59:59。999999

print(x4。resolution) # 獲取時間的最小單位為1微秒

# 結果顯示0:00:00。000001

print(x4。isoformat()) # 返回型如“HH:MM:SS”格式的字串表示

# 結果顯示12:23:34

print(x4。strftime(’%S-%M-%H‘)) # 返回自定義格式化字串

# 結果顯示34-23-12

x4X = datetime。time。replace(x4, 15, 12, 46) # 建立一個新的時間物件,用引數指定的時、分、秒、微秒代替原有物件中的屬性(原有物件仍保持不變);

print(x4X)

# 結果顯示15:12:46

print(x4)

# 結果顯示12:23:34

datetime class timedelta(SupportsAbs[timedelta])表示兩個日期時間物件之間的差異(時間間隔)。支援的加減時間增量,加、減、abs與時間增量比較,乘以除以int此外,datetime 支援兩個 datetime 物件的相減返回一個 timedelta,以及一個 datetime 和一個timedelta 的相加或相減給出一個datetime。

x5 = datetime。timedelta(minutes=3。0)

print(x5)

# 結果顯示0:03:00

x5x = x_today - x_utcnow #兩個 datetime 物件的相減返回一個 timedelta

print(x_today)

# 結果顯示2021-11-13 10:44:10。671427

print(x_utcnow)

# 結果顯示2021-11-13 02:44:10。671427

print(x5x)

# 結果顯示8:00:00

x5x_x = x_today + x5x + x5x + x5x

print(x5x_x)

# 結果顯示2021-11-14 12:48:36。736688

print(datetime。MAXYEAR) # 獲取最大年份

# 結果顯示9999

print(datetime。MINYEAR) # 獲取最小年份

# 結果顯示0001

datetime class tzinfo時區資訊類的抽象基類。這是一個抽象基類,也就是說該類不應被直接例項化。 請定義 tzinfo 的子類來捕獲有關特定時區的資訊。

子類必須覆蓋 name()、utcoffset() 和 dst() 方法。

# datetime 模組提供了 timezone,這是 tzinfo 的一個簡單實體子類

print(datetime。timezone。max)

# 結果顯示UTC+23:59

print(datetime。timezone。min)

# 結果顯示UTC-23:59

print(datetime。timezone。utc)

# 結果顯示UTC

3、日期格式程式碼如下:

%a Weekday,短版本

%A Weekday,完整版本

%w Weekday,數字 0-6,0 為週日

%d 日,數字 01-31

%b 月名稱,短版本

%B 月名稱,完整版本

%m 月,數字01-12

%y 年,短版本,無世紀

%Y 年,完整版本

%H 小時,00-23

%I 小時,00-12

%p AM/PM

%M 分,00-59

%S 秒,00-59

%f 微妙,000000-999999

%z UTC 偏移

%Z 時區

%j 天數,001-366

%U 週數,每週的第一天是週日,00-53

%W 週數,每週的第一天是週一,00-53

%c 日期和時間的本地版本

%x 日期的本地版本

%X 時間的本地版本

%% A % character

希望以上的總結對你有幫助!!!