首頁  >  文章  >  後端開發  >  Python中datetime模組的用法及常用方法總結

Python中datetime模組的用法及常用方法總結

不言
不言原創
2018-09-19 14:56:2320626瀏覽

本篇文章帶給大家的內容是關於Python中datetime模組的用法及常用方法總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

datetime模組重新封裝了time模組,提供更多的接口,提供的類別有:

date,表示日期的類別

time,表示時間的類別

datetime,表示日期和時間的類別

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

tzinfo,與時區相關的資訊

 ( 這些類別的物件都是不可變的)

(類別有類別方法,類別方法裡有方法,方法繼承了類別方法)

1、date類別

datetime.date(year,month,day

常用的類別方法與屬性:

date.max 物件所能表示的最大日期(9999-12-31)
#date.min 物件所能表示的最小日期(0001 -01-01) 
date.today() 傳回一個表示目前本地時間的date物件                                         
date.resolution #date物件表示日期的最小單位(天)
date.fromtimestamp(timestamp) #根據給定的時間戳,傳回一個date物件
#

實作:

類別方法

import datetime
import time
print(datetime.date.max)
print(datetime.date.min)
print(datetime.date.today())
print(datetime.date.resolution)
print(datetime.date.fromtimestamp(time.time()+3600000))      # 给定时间戳的 日期

result

9999-12-31
0001-01-01
2018-09-17
1 day, 0:00:00
2018-10-29

其中常用的方法與屬性:

实现:

方法

print(datetime.date.year)              # <attribute &#39;year&#39; of &#39;datetime.date&#39; objects>
print(datetime.date.today().year)     # 本地时时间的年
print(datetime.date.fromtimestamp(time.time()+3600000).month)   # 给定时间戳的 月
print(datetime.date.today().day)  # 日

print(datetime.date.today().replace(year=2019))
print(datetime.date.today().timetuple())
print(datetime.date.today().toordinal())
print(datetime.date.today().weekday())
print(datetime.date.today().isoweekday())
print(datetime.date.today().isocalendar())
print(datetime.date.today().isoformat())
print(datetime.date.today().strftime(&#39;%Y-%m-%d-%a-%I&#39;))

result

<attribute &#39;year&#39; of &#39;datetime.date&#39; objects>
10
2019-09-17
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=260, tm_isdst=-1)
0
(2018, 38, 1)
2018-09-17
2018-09-17-Mon-12

result

2、time类

其中,time类和time模块各自独立

datetime.time(hour[,minute[,decond[,microsecond[,tzinfo]]]])

常用的类方法与属性:

d.year
d.month
d.day
d.replace(year[,month[,day]]) 生成並返回一個新的日期對象,原日期對像不變                                                      
d.timetuple() 傳回日期對應的時間元組(time.struct_time)物件
#d.toordinal()
返回日期是自0001-01-01開始的第多少天
d .weekday() 回傳日期是星期幾,[0,6],0表示星期一,1表示星期二
##d.isoweekday() #回傳日期是星期幾,[1,7],1表示星期一,2表示星期二
d.isocalendar() 回傳格式為(year,weekday,isoweekday)的元組
#d.isoformat() 傳回'YYYY-MM-DD'格式的日期字串
d.strftime() 自訂格式化字串(和time模組的strftime()方法相同)
time.max 表示的最大时间
time.min                  表示的最小时间
time.resolution 时间的最小单位,这里是1微秒                                                                         

常用的方法与属性:

t.hour
t.minute               
t.second
t.microsecond 微秒
t.tzinfo 时区信息
t.replace() 用参数指定替代(时,分,秒,微秒,时区)对象,生成并返回新的对象
t.isoformat() 返回'HH:MM:SS'格式字符串
t.strftime() 返回自定义格式化字符串

3、datetime類別

等於date和time結合起來

datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]]])

 常用的類別方法與屬性:

datetime.max #最大日期
datetime.min #最小日期
#datetime.resolution datetime物件所表示日期的最小單位,1微秒
#datetime.today() 傳回目前本機時間
datetime.now([tz]) 傳回目前本機時間,如果指定tz,則傳回tz時區當地時間
#datetime.utcnow() 傳回目前UTC時間
datetime.fromtimestamp(timestamp[,tz]) 根據給定的時間戳返回datetime對象,如果指定tz,則傳回tz時區datetime物件
#datetime.utcfromtimestamp(timestamp) #根據時間戳建立一個datetime物件
datetime.combine(date,time) 把指定的date和time物件整合為datetime物件
datetime.strftime(date_string,format) 將格式化字串轉換為datetime對象
#

实现:

类方法

import datetime
import time
print(datetime.datetime.resolution)
print(datetime.datetime.today())
print(datetime.datetime.now())
print(datetime.datetime.utcnow())
print(datetime.datetime.fromtimestamp(time.time()))
print(datetime.datetime.utcfromtimestamp(time.time()))
print(datetime.datetime.combine(datetime.date(2019, 3, 5), datetime.time(3, 2, 45)))
print(datetime.datetime.strftime(datetime.date(2019,9,2),&#39;%Y-%m-%d %X&#39;))

result

0:00:00.000001
2018-09-17 20:32:36.868500
2018-09-17 20:32:36.868500
2018-09-17 12:32:36.868500
2018-09-17 20:32:36.868500
2018-09-17 12:32:36.868500
2019-03-05 03:02:45
2019-09-02 00:00:00

其中常用的方法与属性:

##返回UTC時間對應的時間元組(不包括tzinfo)#dt.timestamp()回傳dt物件對應的時間戳dt.toordinal()返回日期是是自0001-01-01 開始的第多少天(與date類別相同)dt.weekday()返回日期是星期幾,[ 1, 7], 1表示星期一(與date類別相同)#dt.isocalendar()傳回格式如(year,month,day)的時間元組(與date類別相同)#dt.isoformat()#傳回格式如'YYYY-MM-DD HH:MM:SS'的字串dt.ctime()等價與time模組的time.ctime(time.mktime(d.timetuple()))dt.strftime ()傳回指定格式的時間字串#

实现:

方法

import datetime,time
print(datetime.datetime.today().tzinfo)
print(datetime.datetime.today().date())
print(datetime.datetime.today().time())
print(datetime.datetime.today().timetz())
print(datetime.datetime.today().timetuple())
print(datetime.datetime.today().timestamp())
print(datetime.datetime.today().ctime())

result

None
2018-09-17
20:36:47.560500
20:36:47.560500
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=20, tm_min=36, tm_sec=47, tm_wday=0, tm_yday=260, tm_isdst=-1)
1537187807.5605
Mon Sep 17 20:36:47 2018

4、timedelta类

时间加减(代表了两个datetime之间的时间差)

datetime.timedalta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0 ,hours=0,weeks=0)

在日期上做天,小时,分钟,秒,毫秒,微秒,周 的时间计算

  • 1毫秒转换为1000微秒

  • 1分钟转换为60秒

  • 1小时转换为3600秒

  • 1周转换为7天

其中,timedelta内部只存储 days,seconds,microseconds

方法与属性:

dt.year

dt.month

dt.day

dt.hour

dt.minute

dt.second

dt.microsecond #.微妙
##dt .tzinfo 時區資訊
#dt.date() 取得dt的date物件
dt.time() 取得dt的time對象,tzinfo 為none
dt.timetz() #取得dt的time對象,tzinfo 為與datetime的tzinfo相同
dt.replace() #指定參數替代(年,月,日,時,分,秒,微妙,時區),產生並傳回新物件
#dt.timetuple() 傳回日期時間對應的時間元組(time.struct_time)(不包括tzinfo)
dt.utctimetuple()
td.days 天(范围[-999999999,999999999])
td.seconds 秒(范围[0,86399])                                                                                                   
td.microseconds 微秒(范围[0,999999])
td.total_seconds() 以秒为单位返回该时间差

实现:

方法

m = datetime.datetime.now()
print(m)
l = m + datetime.timedelta(3)
print(l)
n = m + datetime.timedelta(hours=4)
print(n)
span = l-m
print(span)
print(span.total_seconds())

result

2018-09-17 16:38:43.021000
2018-09-20 16:38:43.021000
2018-09-17 20:38:43.021000
3 days, 0:00:00
259200.0

5、tzinfo时区类

 其中,tzinfo是一个抽象类,所以不能直接被实例化

 时间转换需要用datetime和pytz来转换时区

以上是Python中datetime模組的用法及常用方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn