Python標准庫:datetime 時間和日期模塊 —— 時間的獲取和操作詳解


datetime 時間和日期模塊

datetime 模塊提供了以簡單和復雜的方式操作日期和時間的類。雖然支持日期和時間算法,但實現的重點是有效的成員提取以進行輸出格式化和操作。該模塊還支持可感知時區的對象。
本文主要介紹datetime庫的一些基本的使用方法。


timestamp:時間戳,指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數

utc:世界協調時間(Universal Time Coordinated,UTC)
GPS 系統中有兩種時間區分,一為UTC,另一為LT(地方時),兩者的區別為時區不同,UTC就是0時區的時間,地方時為本地時間,如北京為早上八點(東八區),UTC時間就為零點,時間比北京時晚八小時,以此計算即可。

1. 常用用法

datetime庫中定義的幾個類:

類名稱 描述 常用屬性
datetime.date 表示日期 year, month, day
datetime.time 表示時間 hour, minute, second, microsecond
datetime.datetime 表示日期和時間 year, month, day, hour, minute, microsecond
datetime.timedelta 表示兩個日期時間之間的差 days, hours, seconds
datetime.tzinfo 描述時區信息對象的抽象基類 上網查找
datetime.timezone 時區,表示與UTC的固定偏移量 datetime.timedelta對象

導入:

import datetime as datet
from datetime import date, time, datetime, timedelta, timezone

常量:

常量 描述
datetime.MINYEAR datedatetime 對象允許的最小年份 1
datetime.MAXYEAR datedatetime 對象允許最大的年份 9999

1.1 datetime.date

date 對象代表一個理想化歷法中的日期(年、月和日),即當今的格列高利歷向前后兩個方向無限延伸。

from datetime import date

實例化一個date對象:

d = date(year=2021,month=1,day=1)	#一種方法
d = date(2021,1,1)	#更簡單一些

date類的方法和屬性:

方法和屬性 描述
date.max date類所能表示的最大日期
date.min date類所能表示的最小日期
date.resolution 日期的最小單位,即兩個不同日期的最小差值,返回timedelta對象
date.today() 獲取今天的日期
date.fromtimestamp(timestamp) 時間戳獲取日期
date.fromisoformat(‘xxxx-xx-xx’) 將特定格式日期字符串轉換為date對象
date.fromisocalendar(year,week,weekday) 以年、一年中第幾個星期、星期幾獲取日期
date.fromordinal(int) 用0001-01-01至該日期的天數獲取日期

date對象的方法和屬性:

方法和屬性 描述
d.year 獲取年
d.month 獲取月
d.day 獲取日
d.weekday() 獲取該日期是星期幾,范圍0~6,0表示星期一
d.isoweekday() 獲取該日期是星期幾,范圍1~7,1表示星期一
d.replace(year[,month[,day]]) 生成並返回一個新的日期對象,原日期對象不變
d.ctime() 返回一個表示日期的字符串
d.isoformat() 返回該日期的’xxxx-xx-xx’字符串格式
d.isocalendar() 返回該日期的(year,week,weekday)元組格式
d.timetuple() 返回該日期對應的time.struct_time對象
d.toordinal() 返回從0001-01-01至該日期的天數
d.strftime(format) 返回指定格式的日期字符串

示例:

>>> from datetime import date	#導入date模塊

>>> import time
>>> stamptime = time.time()		#導入time庫獲取時間戳

>>> date.today()	#獲取當天時間
datetime.date(2021, 6, 26)
>>> date.max	#獲取date類所能表示的最大日期
datetime.date(9999, 12, 31)
>>> date.min	#獲取date類所能表示的最小日期
datetime.date(1, 1, 1)
>>> date.resolution	#獲取日期間隔的最小單位
datetime.timedelta(days=1)
>>> date.fromtimestamp(time.time())	#用時間戳獲取日期
datetime.date(2021, 6, 26)
>>> date.fromisoformat('2021-01-01')	#用'xxxx-xx-xx'格式字符串獲取日期
datetime.date(2021, 1, 1)
>>> date.fromisocalendar(2020,1,3)	#以年、一年中第幾個星期、星期幾獲取日期
datetime.date(2020, 1, 1)
>>> date.fromordinal(737425)	#用0001-01-01至該日期的天數獲取日期
datetime.date(2020, 1, 1)

>>> d = date(2020,1,1)	#生成日期
>>> d
datetime.date(2020, 1, 1)
>>> print(d)	#注意打印出來的日期會自動安排格式
2020-01-01
>>> d.year	#獲取年
2020
>>> d.month	#獲取月
1
>>> d.day	#獲取日
1
>>> d.replace(1949,10,1)	#生成並返回一個新的日期對象,原日期對象不變
datetime.date(1949, 10, 1)
>>> d	#原日期對象不變
datetime.date(2020, 1, 1)
>>> d.ctime()	#返回一個表示日期的字符串
'Wed Jan 1 00:00:00 2020'
>>> d.weekday()	#對應星期幾,范圍0~6
2
>>> d.isoweekday()	#對應星期幾,范圍1~7
3
>>> d.isoformat()	#返回該日期的'xxxx-xx-xx'字符串格式
'2020-01-01'
>>> d.isocalendar()	#返回該日期的(year,week,weekday)元組格式
(2020, 1, 3)
>>> d.timetuple()	#返回該日期對應的time.struct_time對象
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=1, tm_isdst=-1)
>>> d.toordinal()	#返回從0001-01-01至該日期的天數
737425
>>> d.strftime('date:%Y/%m/%d')	#返回指定格式的日期字符串,其中可放置字符串和模塊內其他格式字符(見文末),好像不能有中文
'date:2020/01/01'


1.2 datetime.time

一個 time 對象代表某日的(本地)時間,它獨立於任何特定日期,並可通過 tzinfo 對象來調整。

import datetime as datet
from datetime import time, timedelta, timezone

實例化一個time對象:

t = time(hour=12,minute=30,second=55,tzinfo=timezone.utc)	#制定時區實例化一個time對象,tzinfo可選
t = time(12,30,55)	#簡略一些

time類的方法和屬性:

方法和屬性 描述
time.max time類所能表示的最大時間
time.min time類所能表示的最小時間
time.resolution 時間的最小單位,即兩個不同時間的最小差值,返回timedelta對象
time.fromisoformat(xx:xx:xx) 將特定格式時間字符串轉換為time對象

time對象的方法和屬性:

方法和屬性 描述
t.hour 獲取時
t.minute 獲取分
t.second 獲取秒
t.microsecond 獲取微秒
t.tzinfo 獲取時區信息
t.tzname() 獲取時區名稱
t.utcoffset() 獲取與utc時區的時間偏移量,為timedelta對象
t.isoformat() 返回該日期時間的’xx:xx:xx’字符串格式,如果該時間相比utc有偏移,即有指定時區,則會附上偏移量。
t.replace([,hour[, minute[, second[, microsecond[, tzinfo]]]]]) 生成並返回一個新的time對象,原對象不變
t.strftime(format) 返回指定格式的時間字符串

示例:

>>> import datetime as datet		#導入庫和模塊
>>> from datetime import time, timedelta, timezone

>>> time.max	#time類所能表示的最大時間
datetime.time(23, 59, 59, 999999)
>>> time.min	#time類所能表示的最大時間
datetime.time(0, 0)
>>> time.resolution		#時間的最小單位,即兩個不同時間的最小差值,返回timedelta對象
datetime.timedelta(microseconds=1)
>>> time.fromisoformat('12:30:55')	#將特定格式時間字符串轉換為time對象
datetime.time(12, 30, 55)

>>> t = time(12,30,55,tzinfo=timezone.utc)	#指定時區實例化一個time對象
>>> t
datetime.time(12, 30, 55, tzinfo=datetime.timezone.utc)
>>> print(t)
12:30:55+00:00	#注意打印出來的會自動格式化,如果指定了時區則附上偏移量
>>> t.hour	#獲取時
12
>>> t.minute	#獲取分
30
>>> t.second	#獲取秒
55
>>> t.microsecond	#獲取微秒
0
>>> t.tzinfo	#獲取時區信息
datetime.timezone.utc
>>> t.tzname()	#獲取時區名稱
'UTC'
>>> t.utcoffset()	#獲取偏移量
datetime.timedelta(0)
>>> t.isoformat()	#用特定格式字符串獲取時間
'12:30:55+00:00'
>>> t.replace(9,30)		#生成並返回一個新的time對象,原對象不變
datetime.time(9, 30, 55, tzinfo=datetime.timezone.utc)
>>> t.strftime('time:%H:%M:%S')	#返回指定格式的時間字符串
'time:12:30:55'


1.3 datetime.datetime

datetime 對象是包含來自 date 對象和 time 對象的所有信息的單一對象。

import datetime as datet
from datetime import datetime, timezone

實例化一個datetime對象:

dt = datetime(year=2021,month=1,day=1,hour=12,minute=30,second=55)	#實例化
dt = datetime(2021,1,1,12,30,55)	#更加簡單一些
dt = datetime(2021,1,1,12,30,55,tzinfo=timezone.utc)	#指定時區的方法

datetime類的方法和屬性:

方法和屬性 描述
datetime.max datetime類所能表示的最大日期時間
datetime.min datetime類所能表示的最小日期時間
datetime.resolution 時間的最小單位,即兩個不同時間的最小差值,返回timedelta對象
datetime.today() 獲取當前日期和時間
datetime.now(tz) 獲取指定時區的當前日期時間,如果不指定tz參數則結果同上
datetime.utcnow() 獲取當前utc日期時間
datetime.fromtimestamp(timestamp[, tz]) 時間戳獲取時間
datetime.utcfromtimestamp(timestamp) 時間戳獲取utc時間
datetime.combine(date, time) 合並datetime對象
datetime.strptime(‘datetime’,format) 將時間字符串轉換為datetime對象

datetime對象的方法和屬性:

方法和屬性 描述
dt.year 獲取年
dt.month 獲取月
dt.day 獲取日
dt.hour 獲取時
dt.minute 獲取分
dt.second 獲取秒
dt.microsecond 獲取微秒
dt.date() 獲取datetime對象對應的date對象
dt.time() 獲取datetime對象對應的time對象,tzinfo為None
dt.tzinfo 獲取時區信息
dt.tzname() 獲取時區名稱
dt.utcoffset() 獲取與UTC時區的時間偏移量,為timedelta對象
dt.timetz() 獲取datetime對象對應的time對象和tzinfo
dt.ctime() 返回一個表示日期的字符串
dt.weekday() 獲取該日期是星期幾,范圍0~6,0表示星期一,同date
dt.isoweekday() 獲取該日期是星期幾,范圍1~7,1表示星期一,同date
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) 生成並返回一個新的datetime對象,原對象不變
dt.astimezone(tz) 生成並返回一個新的datetime對象,改變其tzinfo,原對象不變
dt.dst() 根據datetime對象的tzinfo,返回是否夏令時
dt.isoformat(sep,timespec) 返回該日期時間的’xxxx-xx-xx xx:xx:xx’字符串格式,sep為日期和時間間的分隔符,默認為T,timespec為時間部分顯示模式選擇(參見示例),如果該時間相比utc有偏移,即有指定時區,則會附上偏移量。
dt.isocalendar() 返回該日期時間的(year,week,weekday)元組格式,同date
dt.timetuple() 返回該日期時間對應的time.struct_time對象(不包括tzinfo)
dt.utctimetuple() 返回該日期時間對應的utc時區time.struct_time對象(不包括tzinfo)
dt.toordinal() 返回從0001-01-01至該日期的天數,同date
dt.strftime(format) 返回指定格式的日期時間字符串

示例:

>>> import datetime as datet		#導入庫和模塊
>>> from datetime import datetime, timezone

>>> datetime.max	#datetime類所能表示的最大日期時間
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
>>> datetime.min	#datetime類所能表示的最小日期時間
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.resolution		#時間的最小單位,即兩個不同時間的最小差值,返回timedelta對象
datetime.timedelta(microseconds=1)
>>> datetime.today()	#獲取當前日期和時間
datetime.datetime(2021, 6, 27, 8, 2, 19, 708118)
>>> datetime.now()		#獲取當前日期時間
datetime.datetime(2021, 6, 27, 8, 2, 31, 65767)
>>> datetime.now(tz=timezone(timedelta(hours=8)))	#獲取指定時區的當前日期時間
datetime.datetime(2021, 6, 27, 8, 3, 50, 882333, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
>>> datetime.utcnow()	#獲取當前utc日期時間
datetime.datetime(2021, 6, 27, 0, 6, 19, 706845)	#可以看到,utc時間與我們北京時間是差了八個小時的
>>>datetime.fromtimestamp(1624753068.8182602,tz=timezone(timedelta(hours=8)))	#用時間戳獲取時間,指定時區
datetime.datetime(2021, 6, 27, 8, 17, 48, 818260, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
>>> datetime.utcfromtimestamp(1624753068.8182602)	#用時間戳獲取utc時間
datetime.datetime(2021, 6, 27, 0, 17, 48, 818260)	#差了八個小時
>>> datetime.fromisocalendar(2020, 53, 5)	#以年、一年中第幾個星期、星期幾獲取日期
datetime.datetime(2021, 1, 1, 0, 0)
>>> datetime.fromisoformat('2021-01-01T12:30:55')	#用特定格式字符串獲取時間,注意日期和時間中間用T連接
datetime.datetime(2021, 1, 1, 12, 30, 55)
>>> datetime.fromordinal(737791)	#用0001-01-01至該日期的天數獲取日期
datetime.datetime(2021, 1, 1, 0, 0)
>>> d = date(2021,1,1)
>>> t = time(12,30,50)
>>> datetime.combine(d,t,tzinfo=timezone(timedelta(hours=8)))	#用combine合並日期和時間,如果不指定時區則使用time的時區
datetime.datetime(2021, 1, 1, 12, 30, 50, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
>>> datetime.strptime('date:2021-01-01,time:12:30:50','date:%Y-%m-%d,time:%H:%M:%S')	#字符串轉時間
datetime.datetime(2021, 1, 1, 12, 30, 50)

>>> dt = datetime(2021,1,1,12,30,55,tzinfo=timezone.utc)	#帶時區實例化一個datetime
>>> dt
datetime.datetime(2021, 1, 1, 12, 30, 55, tzinfo=datetime.timezone.utc)
>>> print(dt)
2021-01-01 12:30:55+00:00	#注意打印出來的會自動格式化,如果指定了時區則附上偏移量
>>> dt.year		#以下是獲取年、月、日、時、分、秒、微秒
2021
>>> dt.month
1
>>> dt.day
1
>>> dt.hour
12
>>> dt.minute
30
>>> dt.second
55
>>> dt.microsecond
0
>>> dt.date()	#獲取datetime對象對應的date對象
datetime.date(2021, 1, 1)
>>> dt.time()	#獲取datetime對象對應的time對象
datetime.time(12, 30, 55)
>>> dt.tzinfo	#獲取時區信息
datetime.timezone.utc
>>> dt.tzname()	#獲取時區名稱
'UTC'
>>> dt2 = datetime(2021,1,1,12,59,59,tzinfo=timezone(timedelta(hours=8),name='Beijing'))	#自定義時區名稱
>>> dt2.tzname()	#獲取時區名稱
'Beijing'
>>> dt2.utcoffset()		#獲取偏移量
datetime.timedelta(seconds=28800)
>>> dt.timetz()		#獲取datetime對象對應的time對象和tzinfo
datetime.time(12, 30, 55, tzinfo=datetime.timezone.utc)
>>> dt.ctime()
'Fri Jan 1 12:30:55 2021'
>>> dt.weekday()	#獲取該日期是星期幾,范圍0~6,0表示星期一,同date
4
>>> dt.isoweekday()	#獲取該日期是星期幾,范圍1~7,1表示星期一,同date
5
>>> dt.replace(1949,10,1)	#生成並返回一個新的datetime對象,原對象不變
datetime.datetime(1949, 10, 1, 12, 30, 55, tzinfo=datetime.timezone.utc)
>>> dt.astimezone(tz=timezone(timedelta(hours=8)))	#生成並返回一個新的datetime對象,改變其tzinfo,原對象不變
datetime.datetime(2021, 1, 1, 20, 30, 55, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
>>> dt.isoformat()	#返回該日期時間的'xxxx-xx-xx xx:xx:xx'字符串格式,sep為日期和時間間的分隔符,默認為T,timespec為時間部分顯示模式選擇
'2021-01-01T12:30:55+00:00'
>>> dt.isoformat(sep=' ',timespec='minutes')	#timespec為時間部分顯示模式選擇,如果該時間相比utc有偏移,即有指定時區,則會附上偏移量。
'2021-01-01 12:30+00:00'
''' timespec參數及其format auto:根據time對象的時間內容,自動選擇模式 hours:HH minutes:HH:MM seconds:HH:MM:SS microseconds:HH:MM:SS.ffff milliseconds:HH:MM:SS.sss 注:除了milliseconds,其他模式,如果出現了時間偏移量offsetime,則需要加上偏移量 '''
>>> dt.isocalendar()	#返回該日期時間的(year,week,weekday)元組格式,同date
(2020, 53, 5)
>>> dt.timetuple()	#返回該日期時間對應的time.struct_time對象(不包括tzinfo)
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=55, tm_wday=4, tm_yday=1, tm_isdst=-1)
>>> dt.utctimetuple()	#返回該日期時間對應的utc時區time.struct_time對象(不包括tzinfo)
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=55, tm_wday=4, tm_yday=1, tm_isdst=0)
>>> dt.toordinal()	#返回從0001-01-01至該日期的天數,同date
737791
>>> dt.strftime('date:%Y-%m-%d,time:%H:%M:%S')	#返回指定格式的日期字符串,其中可放置字符串和模塊內其他格式字符(見文末),好像不能有中文
'date:2021-01-01,time:12:30:55'


1.4 datetime.timedelta

timedelta 對象表示兩個 date 或者 time 的時間間隔。

import datetime as datet
from datetime import date, time, datetime, timedelta, timezone

timedelta 類的參數:

參數 含義
days
seconds
microseconds 微秒
milliseconds 毫秒
minutes 分鍾
hours 小時
weeks

所有參數都可選,可為int、float和正數、負數。內部值只存儲days、seconds 和 microseconds,因此其他所有參數的單位都會被轉換:

  • 1毫秒 轉換為 1000微秒: 1milliseconds = 1000microseconds

  • 1分鍾 轉換為 60秒: 1minutes = 60seconds

  • 1小時 轉換為 3600秒: 1hours = 3600seconds

  • 1星期 轉換為 7天: 1weeks = 7days

實例化一個timedelta對象:

delta = timedelta(days=10,seconds=5,microseconds=5555,minutes=30,hours=12,weeks=2)

timedelta類的方法和屬性:

方法和屬性 描述
timedelta.max timedelta類所能表示的最大時間間隔
timedelta.min timedleta類所能表示的最小時間間隔
timedelta.resolution timedelta類所能表示的時間間隔的最小單位

timedelta對象的方法和屬性:

方法和屬性 描述
delta.days 獲取timedelta對象經過單位換算后的總天數
delta.seconds 獲取timedelta對象經過單位換算后的總秒數
delta.microseconds 獲取timedelta對象經過單位換算后的總微秒數
delta.total_seconds() 獲取timedelta對象包含的總秒數

使用timedelta對象可以對日期、時間進行求差、加減、比較等操作。
示例:

>>> import datetime as datet
>>> from datetime import datetime, timedelta

>>> timedelta.max	#timedelta類所能表示的最大時間間隔 
datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
>>> timedelta.min	#timedleta類所能表示的最小時間間隔
datetime.timedelta(days=-999999999)
>>> timedelta.resolution	#timedelta類所能表示的時間間隔的最小單位
datetime.timedelta(microseconds=1)
>>> delta = timedelta(days=10,seconds=5,microseconds=5555,minutes=30,hours=12,weeks=2)	#實例化一個timedelta對象
>>> delta
datetime.timedelta(days=24, seconds=45005, microseconds=5555)
>>> print(delta)	#注意打印出來的會自動格式化
24 days, 12:30:05.005555
>>> delta.days	#獲取timedelta對象經過單位換算后的總天數
24
>>> delta.seconds	#獲取timedelta對象經過單位換算后的總秒數
45005
>>> delta.microseconds	#獲取timedelta對象經過單位換算后的總微秒數
5555
>>> delta.total_seconds()	#獲取timedelta對象包含的總秒數
2118605.005555

>>> dt1 = datetime(2021,1,1,12,30,55)
>>> dt2 = datetime(2020,1,1,9,30,00)
>>> dt1 - dt2	#大減小
datetime.timedelta(days=366, seconds=10855)
>>> dt2 - dt1	#小減大
datetime.timedelta(days=-367, seconds=75545)
#以上方法求兩個時間的差值

>>> dt1 + timedelta(seconds=5)		#5秒后
datetime.datetime(2021, 1, 1, 12, 31)
>>> dt1 - timedelta(seconds=5)		#5秒前,第一種方法:直接減去timedelta對象
datetime.datetime(2021, 1, 1, 12, 30, 50)
>>> dt1 + timedelta(seconds=-5)		#5秒前,第二種方法:tamedelta對象參數設為正、負數以加減
datetime.datetime(2021, 1, 1, 12, 30, 50)
#以上方法可將時間向前、向后延遲

>>> (dt1 - dt2).total_seconds()		#計算時間差總秒數
31633255.0

>>> dt1>dt2
True
>>> dt1<dt2
False
>>> dt1 == dt2
False
#比較大小

拓展:計算時間差,單位:天、時、分。
有時我們需要計算時間差,但是timedelta對象中只包含days、seconds、microseconds三種屬性,並不能滿足我們的需要,於是可以寫一個函數,傳入兩個datetime對象,計算其天、時、分的差值:

def delta(start,end):
    days = 0
    hours = 0
    minutes = 0
    delta = end-start
    minutes = int(delta.total_seconds() // 60)
    if minutes >= 60:
        hours = int(minutes // 60)
        minutes = minutes - 60 * hours
        if hours >= 24:
            days = int(hours // 24)
            hours = hours - 24 * days
    text = str(days) + '天' if days else ''
    text = text + str(hours) + '時' if hours else text
    text = text + str(minutes) + '分' if minutes else text

    return text

效果:

dt1 = datetime(2021,1,1,9,30,20)
dt2 = datetime(2021,6,15,12,30,20)
print(delta(dt1,dt2))	#執行函數
>>> 
=================== RESTART: D:\Python\Files\delta.py ==================
1653

1.5 datetime.timezone

import datetime as datet
from datetime import datetime, timedelta, timezone

timezone類的參數:

參數 描述
offset timedelta類型,表示與UTC時區的時間間隔,范圍:-timedelta(hours=24)至timedelta(hours=24)
name 可選參數,字符串類型,設置該時區名稱,可以被datetime對象通過實例方法tzname()獲取

timezone類的屬性:

屬性 描述
timezone.utc 表示utc時區,即timezone(timedelta(hours=0))

使用示例:

>>> import datetime as datet
>>> from datetime import datetime, timedelta, timezone

>>> datetime(2021,1,1,12,30,50,tzinfo=timezone.utc)
datetime.datetime(2021, 1, 1, 12, 30, 50, tzinfo=datetime.timezone.utc)
>>> datetime(2021,1,1,12,30,50,tzinfo=timezone(timedelta(hours=8)))
datetime.datetime(2021, 1, 1, 12, 30, 50, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))	#北京時間

>>> dt = datetime(2021,1,1,12,59,59,tzinfo=timezone.utc)	#utc時區
>>> dt.tzinfo	#獲取時區信息
datetime.timezone.utc
>>> dt.tzname()	#獲取時區名稱
'UTC'
>>> dt.utcoffset()	#獲取偏移量
datetime.timedelta(0)

>>> dt2 = datetime(2021,1,1,12,59,59,tzinfo=timezone(timedelta(hours=8),name='Beijing'))	#自定義時區名稱
>>> dt2.tzinfo		#獲取時區信息
datetime.timezone(datetime.timedelta(seconds=28800), 'Beijing')
>>> dt2.tzname()	#獲取時區名稱
'Beijing'
>>> dt2.utcoffset()		#獲取偏移量
datetime.timedelta(seconds=28800)


2. 模塊內格式字符的含義一覽表

字符 描述
%a 星期的簡寫,如星期三為Wed
%A 星期的全寫,如星期三為Wednesday
%b 月份的簡寫,如4月為Apr
%B 月份的全寫,如4月為April
%c 日期時間的字符串表示,如: 04/07/10 10:43:39
%d 日在這個月中的天數
%f 微秒(范圍:0至999999)
%H 小時(24小時制,范圍:0至 23)
%I 小時(12小時制,范圍:0至 11)
%j 日在年中的天數,范圍:001至366
%m 月份,范圍:01至12
%M 分鍾,范圍:00至59
%p AM或者PM
%S 秒,范圍:00至61
%U 周在當年的周數,星期天為周的第一天
%w 今天在這周的天數,范圍:0至6,6表示星期天
%W 周在當年的周數,星期一作為周的第一天
%x 日期字符串,如:04/07/10
%X 時間字符串,如:10:43:39
%y 2位數表示的年份
%Y 4位數表示的年份
%z 與utc時間的間隔 (如果是本地時間,返回空字符串)
%Z 時區名稱(如果是本地時間,返回空字符串)
%% 轉義,%不變

結束語

datetime庫功能全面,在其常用模塊中,基本上只需要datetime.datetime模塊便能滿足日常需求。
以上便是我分享的全部內容,如果對你有用,點個贊加個收藏再走吧,也歡迎各位給我提出補充和意見!

本文收錄於專欄:Python學習筆記
關注作者,持續閱讀,學習更多Python知識!
https://blog.csdn.net/weixin_52132159


2021/8/1

推薦閱讀


免責聲明!

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



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