十二、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的整合。

  # ---------datetime類(日期時間)操作統計---------------#

  x_today=datetime.datetime() # 當前本地時間的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

  # -------date類(日期)操作統計-------------------------#

  x2=datetime.date() # 返回一個表示當前本地日期的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

  # ---------time類(時間)操作統計-------------#

  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

  # -----------timedelta類(時間間隔)操作統計---------------#

  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

  #------------------tzinfo類(時區)信息操作---------------------#

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

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

  # -----------timezone類---------------#

  # 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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM