1. 程式人生 > >Python基礎模塊:datetime模塊

Python基礎模塊:datetime模塊

center inf 創建 strftime 函數 timedelta next 自定義格式 single

datetime介紹:

datetime是Python處理日期和時間的標準庫。

它包含了五個類:datetime,date,time,timedelta, tzinfo

datetime數據對象:使用strptime把字符串日期轉變為此對象,可以使用datetime裏的一些方法和屬性,比如date(),time(),year,month,day,strftime(),replace()等。

導入語句:from datetime import datetime,date,time,timedelta, timezone,把所有類全都都導入。

如果只導入包名:import datetime,使用的時候必須datetime.datetime,datetime.time,datetime.date

其它時間相關的包:pytz,tzlocal,calendar

datetime類
方法名
作用
示例
結果
strptime(字符串,日期格式)把字符串日期轉換成datetime對象的實例
轉換後的格式可以使用datetime類方法
datetime.strptime('2018-01-18 06:25:38.22222',"%Y-%m-%d %H:%M:%S.22222")2018-01-18 06:25:38
strftime(自定義格式)自已定顯示格式,datetime實例可以使用

dd=datetime.strptime('2018-5-6','%Y-%m-%d')

print(dd.year)

2018
combine(date,time)根據date和time,創建一個datetime對象datetime.combine(date(2018,12,1),time(12,10,3))2018-12-01 12:10:03
fromtimestamp(時間戳[,時區])

把時間戳轉換成datetime對象

缺省時區顯示計算機當前時區

datetime.fromtimestamp(441188)1970-01-06 10:33:08
utcfromtimestamp(時間戳)

時間戳參數必須

把時間戳轉換成UTC標準時區的datetime對象

datetime.utcfromtimestamp(441188)1970-01-06 02:33:08
timestamp(datetime對象)
把datetime對象轉換成時間戳

dd=datetime.strptime('2018-5-6','%Y-%m-%d')

datetime.timestamp(dd)

1525564800.0
timetuple(datetime對象)返回struc_time格式的元組datetime.timetuple(datetime.now())time.struct_time(tm_year=2018, tm_mon=1, tm_mday=24, tm_hour=7, tm_min=44, tm_sec=17, tm_wday=2, tm_yday=24, tm_isdst=-1)
now(時區)

獲取當前系統datetime格式時間

缺省不帶時區,返回的是本機時區

datetime.now()2018-01-19 11:06:03.903022
utcnow()

獲取當前系統datetime格式時間

缺省不帶時區,返回的是標準時區

datetime.utcnow()2018-01-19 03:06:03.903022
astimezone(timezone格式)

帶utc格式的時區轉換時區

它會改變原datetime時間的時區

datetime_utc = datetime.utcnow().replace(tzinfo=timezone.utc)

print(datetime_utc.astimezone(timezone(timedelta(hours=8))))

2018-02-01 15:49:49.578894+08:00
today()

獲取當前系統datetime格式時間

和不帶時區的now()結果一樣

datetime.today()2018-01-19 03:06:03.903022
replace(實參)改變datetime時間對象的屬性值datetime.now().replace(year=2002,month = 11)2002-11-19 04:04:10.917801
datetime格式對象的屬性

date()--日期

year--年

month--月

day--天

time()--時間

hour--小時

minute--分鐘

second--秒

microsecond--微秒

resolution--當前時間格式的最小單位

tzinfo--時區

print(datetime.now().date())

print(datetime.now().year)
print(datetime.now().month)
print(datetime.now().day)
print(datetime.now().time())
print(datetime.now().hour)
print(datetime.now().second)
print(datetime.now().minute)
print(datetime.now().microsecond)
print(datetime.now().resolution)
print(datetime.utcnow().tzinfo)

2018-01-19

2018
1
19
04:13:32.181138
4
32
13
181163
0:00:00.000001
None

-

計算兩個時間的差值,結果分date和time

兩個時間必須是datetime對象

最小可以支持到微秒

n = datetime(10,10,10,10,10)
t = datetime(8,8,8,8,8)
print(n-t)
793 days, 2:02:00





date類
方法名
作用
示例
結果
date(年,月,日)

年月日不可缺省

把年月日參數轉換成date格式

轉換完可以使用date格對象的屬性

date(2002,2,2)
2002-02-02
date格對象的屬性

year--年

month--月

day--天

date(2002,2,2).year

date(2002,2,2).month

date(2002,2,2).day

2002
2
2
timetupel(date對象)返回struc_time格式元組

s = date(1,2,1)

timetuple(s)

time.struct_time(tm_year=1, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=32, tm_isdst=-1)
strftime(date對象,格式符)

返回指定格式化符號的字符串

格式化符號%Y,%m,%d,%y,%w等和天數相關格式

具體參照time模塊的格式說明

s = date(1,2,1)

date.strftime(s,"%y,%W,%Y,%m,%d")

01,05,1,02,01
replace(實參)改變date時間對象的屬性值s.replace(day = 9)0001-02-09
toordinal()計算現在時間距離1年1月1日多少天s.toodinal()32
weekday()返回星期,星期一為0,星期日為6s.weekday()3
iosweekday()返回星期,星期一為1,星期日為7s.iosweekday()(1, 5, 4)
iosformat()返回格式為,“年-月-日”的日期s.iosformat()0001-02-01
ctime()返回字符串型日期s.ctime()Thu Feb 1 00:00:00 0001

time類
方法名
作用
示例
結果
time(小時,分,秒,毫秒)

返回一個time格式的時間

缺省參數,顯示00:00:00

time(12,35,21,965)12:35:21.000965
time屬性。

返回時間的小時、分鐘、秒、毫秒

hour--小時

minute--分鐘

second--秒

microsecond--微秒

tzinfo--時區

t = time(12,35,21,965)

print(t.hour)

print(t.minute)

print(t.second)

print(t.microsecond)

print(t.tzinfo)

12
35
21
965

None

replace(實參)

可以替換指定部分time格式的時間

hour,minute,second,microsecond,tzinfo

print(t.replace(minute=3))12:03:21.000965
isoformat()返回一個‘HH:MM:SS.%f'格式的時間字符串print(t.isoformat())12:35:21.000965
strftime(time時間格式,字符串格式符)將時間格式轉變成指定字符串格式

print(t.strftime("Hours:%H,%M,%S"))

print(time.strftime(t,"Hours:%H,%M,%S"))

Hours:12,35,21

timedelta類

timedalte 對象表示兩個時間的差值,可以指定天、時間、周。

*實際上就是datetime的-號運算結果。使用timedelta格式化以後重新與datetime對象進行加、減運算,計算出指定日期。
*構造函數:timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

屬性說明示例結果
min顯示timedelta支持的最小時間差timedelta.min

-999999999 days, 0:00:00

max顯示timedelta支持的最大時間差timedelta.max999999999 days, 23:59:59.999999
resolution顯示timedelta支持最小時間單位timedelta.resolution0:00:00.000001
timedelta參數

days--天

hours--小時

seconds--秒

microseconds--微秒

milliseconds--毫秒

weeks--周

print(timedelta(days = 1))
print(timedelta(hours = 1))
print(timedelta(seconds = 1))
print(timedelta(microseconds = 1))
print(timedelta(milliseconds = 1))
print(timedelta(weeks = 1))
1 day, 0:00:00
1:00:00
0:00:01
0:00:00.000001
0:00:00.001000
7 days, 0:00:00
timedelta對象屬性

days--天

seconds--秒

microseconds--微秒

delta = timedelta.max

print(delta.days)

print(delta.seconds)

print(delta.microseconds)


999999999
86399
999999

timezone類
utc獲取標準時區0
astimezone(timedelta格式)改變時區

標準變換時區語句:

utc_date= datetime.utcnow().replace(tzinfo=timezone.utc)
print(utc_date)

bj_utc = utc_date.astimezone(timezone(timedelta(hours = 8)))
print(bj_utc)

結果:

2018-02-01 08:23:19.612199+00:00
2018-02-01 16:23:19.612199+08:00


例子:

一、當前時間加一個月

now_time = datetime.now()

next_time = now_time.replace(month = now_time.month+1)



Python基礎模塊:datetime模塊