欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python之日期與時(shí)間處理模塊(date和datetime)

 更新時(shí)間:2017年02月16日 16:33:51   作者:云游道士  
這篇文章主要介紹了Python之日期與時(shí)間處理模塊(date和datetime),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

在開發(fā)工作中,我們經(jīng)常需要用到日期與時(shí)間,如:

  • 作為日志信息的內(nèi)容輸出
  • 計(jì)算某個(gè)功能的執(zhí)行時(shí)間
  • 用日期命名一個(gè)日志文件的名稱
  • 記錄或展示某文章的發(fā)布或修改時(shí)間
  • 其他

Python中提供了多個(gè)用于對(duì)日期和時(shí)間進(jìn)行操作的內(nèi)置模塊:time模塊、datetime模塊和calendar模塊。其中time模塊是通過調(diào)用C庫實(shí)現(xiàn)的,所以有些方法在某些平臺(tái)上可能無法調(diào)用,但是其提供的大部分接口與C標(biāo)準(zhǔn)庫time.h基本一致。time模塊相比,datetime模塊提供的接口更直觀、易用,功能也更加強(qiáng)大。

一、相關(guān)術(shù)語的解釋

  • UTC time Coordinated Universal Time,世界協(xié)調(diào)時(shí),又稱 格林尼治天文時(shí)間、世界標(biāo)準(zhǔn)時(shí)間。與UTC time對(duì)應(yīng)的是各個(gè)時(shí)區(qū)的local time,東N區(qū)的時(shí)間比UTC時(shí)間早N個(gè)小時(shí),因此UTC time + N小時(shí) 即為東N區(qū)的本地時(shí)間;而西N區(qū)時(shí)間比UTC時(shí)間晚N個(gè)小時(shí),即 UTC time - N小時(shí) 即為西N區(qū)的本地時(shí)間; 中國在東8區(qū),因此比UTC時(shí)間早8小時(shí),可以以UTC+8進(jìn)行表示。
  • epoch time 表示時(shí)間開始的起點(diǎn);它是一個(gè)特定的時(shí)間,不同平臺(tái)上這個(gè)時(shí)間點(diǎn)的值不太相同,對(duì)于Unix而言,epoch time為 1970-01-01 00:00:00 UTC。
  • timestamp(時(shí)間戳) 也稱為Unix時(shí)間 或 POSIX時(shí)間;它是一種時(shí)間表示方式,表示從格林尼治時(shí)間1970年1月1日0時(shí)0分0秒開始到現(xiàn)在所經(jīng)過的毫秒數(shù),其值為float類型。 但是有些編程語言的相關(guān)方法返回的是秒數(shù)(Python就是這樣),這個(gè)需要看方法的文檔說明。需要說明的是時(shí)間戳是個(gè)差值,其值與時(shí)區(qū)無關(guān)。

二、時(shí)間的表現(xiàn)形式

常見的時(shí)間表示形式為:

  • 時(shí)間戳
  • 格式化的時(shí)間字符串

Python中還有其它的時(shí)間表示形式:

  • time模塊的time.struct_time
  • datetime模塊的datetime類

關(guān)于datetime模塊的datetime類會(huì)在下面做詳細(xì)講解,這里簡單說下time.struct_time。

time.struct_time包含如下屬性:

下標(biāo)/索引 屬性名稱 描述
0 tm_year 年份,如 2017
1 tm_mon 月份,取值范圍為[1, 12]
2 tm_mday 一個(gè)月中的第幾天,取值范圍為[1-31]
3 tm_hour 小時(shí), 取值范圍為[0-23]
4 tm_min 分鐘,取值范圍為[0, 59]
5 tm_sec 秒,取值范圍為[0, 61]
6 tm_wday 一個(gè)星期中的第幾天,取值范圍為[0-6],0表示星期一
7 tm_yday 一年中的第幾天,取值范圍為[1, 366]
8 tm_isdst 是否為夏令時(shí),可取值為:0 , 1 或 -1

屬性值的獲取方式有兩種:

  • 可以把它當(dāng)做一種特殊的有序不可變序列通過 下標(biāo)/索引 獲取各個(gè)元素的值,如t[0]
  • 也可以通過 .屬性名 的方式來獲取各個(gè)元素的值,如t.tm_year。

需要說明的是struct_time實(shí)例的各個(gè)屬性都是只讀的,不可修改。

三、 time模塊

time模塊主要用于時(shí)間訪問和轉(zhuǎn)換,這個(gè)模塊提供了各種與時(shí)間相關(guān)的函數(shù)。

1. 函數(shù)列表

方法/屬性 描述
time.altzone 返回與utc時(shí)間的時(shí)間差,以秒為單位(西區(qū)該值為正,東區(qū)該值為負(fù))。其表示的是本地DST 時(shí)區(qū)的偏移量,只有daylight非0時(shí)才使用。
time.clock() 返回當(dāng)前進(jìn)程所消耗的處理器運(yùn)行時(shí)間秒數(shù)(不包括sleep時(shí)間),值為小數(shù);該方法Python3.3改成了time.process_time()
time.asctime([t]) 將一個(gè)tuple或struct_time形式的時(shí)間(可以通過gmtime()和localtime()方法獲?。┺D(zhuǎn)換為一個(gè)24個(gè)字符的時(shí)間字符串,格式為: "Fri Aug 19 11:14:16 2016"。如果參數(shù)t未提供,則取localtime()的返回值作為參數(shù)。
time.ctime([secs]) 功能同上,將一個(gè)秒數(shù)時(shí)間戳表示的時(shí)間轉(zhuǎn)換為一個(gè)表示當(dāng)前本地時(shí)間的字符串。如果參數(shù)secs沒有提供或值為None,則取time()方法的返回值作為默認(rèn)值。ctime(secs)等價(jià)于asctime(localtime(secs))
time.time() 返回時(shí)間戳(自1970-1-1 0:00:00 至今所經(jīng)歷的秒數(shù))
time.localtime([secs]) 返回以指定時(shí)間戳對(duì)應(yīng)的本地時(shí)間的 struct_time對(duì)象(可以通過下標(biāo),也可以通過 .屬性名 的方式來引用內(nèi)部屬性)格式
time.localtime(time.time() + n*3600) 返回n個(gè)小時(shí)后本地時(shí)間的 struct_time對(duì)象格式(可以用來實(shí)現(xiàn)類似crontab的功能)
time.gmtime([secs]) 返回指定時(shí)間戳對(duì)應(yīng)的utc時(shí)間的 struct_time對(duì)象格式(與當(dāng)前本地時(shí)間差8個(gè)小時(shí))
time.gmtime(time.time() + n*3600) 返回n個(gè)小時(shí)后utc時(shí)間的 struct_time對(duì)象(可以通過 .屬性名 的方式來引用內(nèi)部屬性)格式
time.strptime(time_str, time_format_str) 將時(shí)間字符串轉(zhuǎn)換為struct_time時(shí)間對(duì)象,如:time.strptime('2017-01-13 17:07', '%Y-%m-%d %H:%M')
time.mktime(struct_time_instance) 將struct_time對(duì)象實(shí)例轉(zhuǎn)換成時(shí)間戳
time.strftime(time_format_str, struct_time_instance) 將struct_time對(duì)象實(shí)例轉(zhuǎn)換成字符串

2. 練習(xí)

獲取時(shí)間戳格式的時(shí)間

>>> time.time()
1486188022.862

獲取struct_time格式的時(shí)間

>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=2, tm_sec=34, tm_wday=5, tm_yday=35, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6, tm_min=2, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)

獲取字符串格式的時(shí)間

>>> time.ctime()
'Sat Feb 04 14:06:42 2017'
>>> time.asctime()
'Sat Feb 04 14:06:47 2017'

時(shí)間戳格式轉(zhuǎn)struct_time格式時(shí)間

>>> t1 = time.time()
>>> print(t1)
1486188476.9
>>> t2 = time.localtime(t1)
>>> print(t2)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)
>>> t3 = time.gmtime(t1)
>>> print(t3)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)
>>>

字符串格式轉(zhuǎn)struct_time格式時(shí)間

>>> time.strptime('Sat Feb 04 14:06:42 2017')
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> time.strptime('Sat Feb 04 14:06:42 2017', '%a %b %d %H:%M:%S %Y')
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> time.strptime('2017-02-04 14:12', '%Y-%m-%d %H:%M')
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> time.strptime('2017/02/04 14:12', '%Y/%m/%d %H:%M')
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> time.strptime('201702041412', '%Y%m%d%H%M')
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)

struct_time格式轉(zhuǎn)字符串格式時(shí)間

>>> time.strftime('%Y-%m-%d %H:%M', time.localtime())
'2017-02-04 14:19'

struct_time格式轉(zhuǎn)時(shí)間戳格式時(shí)間
>>> time.mktime(time.localtime())
1486189282.0

3. 時(shí)間格式轉(zhuǎn)換

時(shí)間戳格式的時(shí)間 與 字符串格式的時(shí)間 雖然可以通過ctime([secs])方法進(jìn)行轉(zhuǎn)換,但是字符串格式不太適應(yīng)中國國情。因此,整體而言,它們 不能直接進(jìn)行轉(zhuǎn)換,需要通過struct_time作為中介,轉(zhuǎn)換關(guān)系如下:

說明:上面的 '%H:%M:%S' 可以直接用 '%X' 代替。

四、 datetime模塊

datetime模塊提供了處理日期和時(shí)間的類,既有簡單的方式,又有復(fù)雜的方式。它雖然支持日期和時(shí)間算法,但其實(shí)現(xiàn)的重點(diǎn)是為輸出格式化和操作提供高效的屬性提取功能。

1. datetime模塊中定義的類

datetime模塊定義了以下幾個(gè)類:

類名稱 描述
datetime.date 表示日期,常用的屬性有:year, month和day
datetime.time 表示時(shí)間,常用屬性有:hour, minute, second, microsecond
datetime.datetime 表示日期時(shí)間
datetime.timedelta 表示兩個(gè)date、time、datetime實(shí)例之間的時(shí)間間隔,分辨率(最小單位)可達(dá)到微秒
datetime.tzinfo 時(shí)區(qū)相關(guān)信息對(duì)象的抽象基類。它們由datetime和time類使用,以提供自定義時(shí)間的而調(diào)整。
datetime.timezone Python 3.2中新增的功能,實(shí)現(xiàn)tzinfo抽象基類的類,表示與UTC的固定偏移量

需要說明的是:這些類的對(duì)象都是不可變的。

類之間的關(guān)系:

object
 date
 datetime
 time
 timedelta
 tzinfo
 timezone

2. datetime模塊中定義的常量

常量名稱 描述
datetime.MINYEAR datetime.date或datetime.datetime對(duì)象所允許的年份的最小值,值為1
datetime.MAXYEAR datetime.date或datetime.datetime對(duì)象所允許的年份的最大值,只為9999

3. datetime.date類

datetime.date類的定義

class datetime.date(year, month, day)

year, month 和 day都是是必須參數(shù),各參數(shù)的取值范圍為:

參數(shù)名稱 取值范圍
year [MINYEAR, MAXYEAR]
month [1, 12]
day [1, 指定年份的月份中的天數(shù)]

類方法和屬性

類方法/屬性名稱 描述
date.max date對(duì)象所能表示的最大日期:9999-12-31
date.min date對(duì)象所能表示的最小日志:00001-01-01
date.resoluation date對(duì)象表示的日期的最小單位:天
date.today() 返回一個(gè)表示當(dāng)前本地日期的date對(duì)象
date.fromtimestamp(timestamp) 根據(jù)跟定的時(shí)間戳,返回一個(gè)date對(duì)象

對(duì)象方法和屬性

對(duì)象方法/屬性名稱 描述
d.year
d.month
d.day
d.replace(year[, month[, day]]) 生成并返回一個(gè)新的日期對(duì)象,原日期對(duì)象不變
d.timetuple() 返回日期對(duì)應(yīng)的time.struct_time對(duì)象
d.toordinal() 返回日期是是自 0001-01-01 開始的第多少天
d.weekday() 返回日期是星期幾,[0, 6],0表示星期一
d.isoweekday() 返回日期是星期幾,[1, 7], 1表示星期一
d.isocalendar() 返回一個(gè)元組,格式為:(year, weekday, isoweekday)
d.isoformat() 返回‘YYYY-MM-DD'格式的日期字符串
d.strftime(format) 返回指定格式的日期字符串,與time模塊的strftime(format, struct_time)功能相同

實(shí)例

>>> import time
>>> from datetime import date
>>>
>>> date.max
datetime.date(9999, 12, 31)
>>> date.min
datetime.date(1, 1, 1)
>>> date.resolution
datetime.timedelta(1)
>>> date.today()
datetime.date(2017, 2, 4)
>>> date.fromtimestamp(time.time())
datetime.date(2017, 2, 4)
>>>
>>> d = date.today()
>>> d.year
2017
>>> d.month
2
>>> d.day
4
>>> d.replace(2016)
datetime.date(2016, 2, 4)
>>> d.replace(2016, 3)
>>> d.replace(2016, 3, 2)
datetime.date(2016, 3, 2)
>>> d.timetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> d.toordinal()
736364
>>> d.weekday()
5
>>> d.isoweekday()
6
>>> d.isocalendar()
(2017, 5, 6)
>>> d.isoformat()
'2017-02-04'
>>> d.ctime()
'Sat Feb 4 00:00:00 2017'
>>> d.strftime('%Y/%m/%d')
'2017/02/04'

4. datetime.time類

time類的定義

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

hour為必須參數(shù),其他為可選參數(shù)。各參數(shù)的取值范圍為:

參數(shù)名稱 取值范圍
hour [0, 23]
minute [0, 59]
second [0, 59]
microsecond [0, 1000000]
tzinfo tzinfo的子類對(duì)象,如timezone類的實(shí)例

類方法和屬性

類方法/屬性名稱 描述
time.max time類所能表示的最大時(shí)間:time(23, 59, 59, 999999)
time.min time類所能表示的最小時(shí)間:time(0, 0, 0, 0)
time.resolution 時(shí)間的最小單位,即兩個(gè)不同時(shí)間的最小差值:1微秒

對(duì)象方法和屬性

對(duì)象方法/屬性名稱 描述
t.hour 時(shí)
t.minute
t.second
t.microsecond 微秒
t.tzinfo 返回傳遞給time構(gòu)造方法的tzinfo對(duì)象,如果該參數(shù)未給出,則返回None
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) 生成并返回一個(gè)新的時(shí)間對(duì)象,原時(shí)間對(duì)象不變
t.isoformat() 返回一個(gè)‘HH:MM:SS.%f'格式的時(shí)間字符串
t.strftime() 返回指定格式的時(shí)間字符串,與time模塊的strftime(format, struct_time)功能相同

實(shí)例

>>> from datetime import time
>>>
>>> time.max
datetime.time(23, 59, 59, 999999)
>>> time.min
datetime.time(0, 0)
>>> time.resolution
datetime.timedelta(0, 0, 1)
>>>
>>> t = time(20, 5, 40, 8888)
>>> t.hour
20
>>> t.minute
5
>>> t.second
40
>>> t.microsecond
8888
>>> t.tzinfo
>>>
>>> t.replace(21)
datetime.time(21, 5, 40, 8888)
>>> t.isoformat()
'20:05:40.008888'
>>> t.strftime('%H%M%S')
'200540'
>>> t.strftime('%H%M%S.%f')
'200540.008888'

5. datetime.datetime類

datetime類的定義

復(fù)制代碼 代碼如下:

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

year, month 和 day是必須要傳遞的參數(shù), tzinfo可以是None或tzinfo子類的實(shí)例。

各參數(shù)的取值范圍為:

參數(shù)名稱 取值范圍
year [MINYEAR, MAXYEAR]
month [1, 12]
day [1, 指定年份的月份中的天數(shù)]
hour [0, 23]
minute [0, 59]
second [0, 59]
microsecond [0, 1000000]
tzinfo tzinfo的子類對(duì)象,如timezone類的實(shí)例

如果一個(gè)參數(shù)超出了這些范圍,會(huì)引起ValueError異常。

類方法和屬性

類方法/屬性名稱 描述
datetime.today() 返回一個(gè)表示當(dāng)前本期日期時(shí)間的datetime對(duì)象
datetime.now([tz]) 返回指定時(shí)區(qū)日期時(shí)間的datetime對(duì)象,如果不指定tz參數(shù)則結(jié)果同上
datetime.utcnow() 返回當(dāng)前utc日期時(shí)間的datetime對(duì)象
datetime.fromtimestamp(timestamp[, tz]) 根據(jù)指定的時(shí)間戳創(chuàng)建一個(gè)datetime對(duì)象
datetime.utcfromtimestamp(timestamp) 根據(jù)指定的時(shí)間戳創(chuàng)建一個(gè)datetime對(duì)象
datetime.combine(date, time) 把指定的date和time對(duì)象整合成一個(gè)datetime對(duì)象
datetime.strptime(date_str, format) 將時(shí)間字符串轉(zhuǎn)換為datetime對(duì)象

對(duì)象方法和屬性

對(duì)象方法/屬性名稱 描述
dt.year, dt.month, dt.day 年、月、日
dt.hour, dt.minute, dt.second 時(shí)、分、秒
dt.microsecond, dt.tzinfo 微秒、時(shí)區(qū)信息
dt.date() 獲取datetime對(duì)象對(duì)應(yīng)的date對(duì)象
dt.time() 獲取datetime對(duì)象對(duì)應(yīng)的time對(duì)象, tzinfo 為None
dt.timetz() 獲取datetime對(duì)象對(duì)應(yīng)的time對(duì)象,tzinfo與datetime對(duì)象的tzinfo相同
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) 生成并返回一個(gè)新的datetime對(duì)象,如果所有參數(shù)都沒有指定,則返回一個(gè)與原datetime對(duì)象相同的對(duì)象
dt.timetuple() 返回datetime對(duì)象對(duì)應(yīng)的tuple(不包括tzinfo)
dt.utctimetuple() 返回datetime對(duì)象對(duì)應(yīng)的utc時(shí)間的tuple(不包括tzinfo)
dt.toordinal() 同date對(duì)象
dt.weekday() 同date對(duì)象
dt.isocalendar() 同date獨(dú)享
dt.isoformat([sep]) 返回一個(gè)‘%Y-%m-%d
dt.ctime() 等價(jià)于time模塊的time.ctime(time.mktime(d.timetuple()))
dt.strftime(format) 返回指定格式的時(shí)間字符串

實(shí)例

>>> from datetime import datetime, timezone
>>>
>>> datetime.today()
datetime.datetime(2017, 2, 4, 20, 44, 40, 556318)
>>> datetime.now()
datetime.datetime(2017, 2, 4, 20, 44, 56, 572615)
>>> datetime.now(timezone.utc)
datetime.datetime(2017, 2, 4, 12, 45, 22, 881694, tzinfo=datetime.timezone.utc)
>>> datetime.utcnow()
datetime.datetime(2017, 2, 4, 12, 45, 52, 812508)
>>> import time
>>> datetime.fromtimestamp(time.time())
datetime.datetime(2017, 2, 4, 20, 46, 41, 97578)
>>> datetime.utcfromtimestamp(time.time())
datetime.datetime(2017, 2, 4, 12, 46, 56, 989413)
>>> datetime.combine(date(2017, 2, 4), t)
datetime.datetime(2017, 2, 4, 20, 5, 40, 8888)
>>> datetime.strptime('2017/02/04 20:49', '%Y/%m/%d %H:%M')
datetime.datetime(2017, 2, 4, 20, 49)
>>> dt = datetime.now()
>>> dt
datetime.datetime(2017, 2, 4, 20, 57, 0, 621378)
>>> dt.year
2017
>>> dt.month
2
>>> dt.day
4
>>> dt.hour
20
>>> dt.minute
57
>>> dt.second
0
>>> dt.microsecond
621378
>>> dt.tzinfo
>>> dt.timestamp()
1486213020.621378
>>> dt.date()
datetime.date(2017, 2, 4)
>>> dt.time()
datetime.time(20, 57, 0, 621378)
>>> dt.timetz()
datetime.time(20, 57, 0, 621378)
>>> dt.replace()
datetime.datetime(2017, 2, 4, 20, 57, 0, 621378)
>>> dt.replace(2016)
datetime.datetime(2016, 2, 4, 20, 57, 0, 621378)
>>> dt.timetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> dt.utctimetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=0)
>>> dt.toordinal()
736364
>>> dt.weekday()
5
>>> dt.isocalendar()
(2017, 5, 6)
>>> dt.isoformat()
'2017-02-04T20:57:00.621378'
>>> dt.isoformat(sep='/')
'2017-02-04/20:57:00.621378'
>>> dt.isoformat(sep=' ')
'2017-02-04 20:57:00.621378'
>>> dt.ctime()
'Sat Feb 4 20:57:00 2017'
>>> dt.strftime('%Y%m%d %H:%M:%S.%f')
'20170204 20:57:00.621378'

6. 使用datetime.datetime類對(duì)時(shí)間戳與時(shí)間字符串進(jìn)行轉(zhuǎn)換

7. datetime.timedelta類

timedelta對(duì)象表示連個(gè)不同時(shí)間之間的差值。如果使用time模塊對(duì)時(shí)間進(jìn)行算術(shù)運(yùn)行,只能將字符串格式的時(shí)間 和 struct_time格式的時(shí)間對(duì)象 先轉(zhuǎn)換為時(shí)間戳格式,然后對(duì)該時(shí)間戳加上或減去n秒,最后再轉(zhuǎn)換回struct_time格式或字符串格式,這顯然很不方便。而datetime模塊提供的timedelta類可以讓我們很方面的對(duì)datetime.date, datetime.time和datetime.datetime對(duì)象做算術(shù)運(yùn)算,且兩個(gè)時(shí)間之間的差值單位也更加容易控制。
 這個(gè)差值的單位可以是:天、秒、微秒、毫秒、分鐘、小時(shí)、周。

datetime.timedelta類的定義

復(fù)制代碼 代碼如下:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

所有參數(shù)都是默認(rèn)參數(shù),因此都是可選參數(shù)。參數(shù)的值可以是整數(shù)或浮點(diǎn)數(shù),也可以是正數(shù)或負(fù)數(shù)。內(nèi)部值存儲(chǔ)days、seconds 和 microseconds,其他所有參數(shù)都將被轉(zhuǎn)換成這3個(gè)單位:

  • 1毫秒轉(zhuǎn)換為1000微秒
  • 1分鐘轉(zhuǎn)換為60秒
  • 1小時(shí)轉(zhuǎn)換為3600秒
  • 1周轉(zhuǎn)換為7天

然后對(duì)這3個(gè)值進(jìn)行標(biāo)準(zhǔn)化,使得它們的表示是唯一的:

  • microseconds : [0, 999999]
  • seconds : [0, 86399]
  • days : [-999999999, 999999999]

類屬性

類屬性名稱 描述
timedelta.min timedelta(-999999999)
timedelta.max timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)
timedelta.resolution timedelta(microseconds=1)

實(shí)例方法和屬性

實(shí)例方法/屬性名稱 描述
td.days 天 [-999999999, 999999999]
td.seconds 秒 [0, 86399]
td.microseconds 微秒 [0, 999999]
td.total_seconds() 時(shí)間差中包含的總秒數(shù),等價(jià)于: td / timedelta(seconds=1)

方法/屬性 描述
datetime.datetime.now() 返回當(dāng)前本地時(shí)間(datetime.datetime對(duì)象實(shí)例)
datetime.datetime.fromtimestamp(timestamp) 返回指定時(shí)間戳對(duì)應(yīng)的時(shí)間(datetime.datetime對(duì)象實(shí)例)
datetime.timedelta() 返回一個(gè)時(shí)間間隔對(duì)象,可以直接與datetime.datetime對(duì)象做加減操作

實(shí)例

>>> import datetime
>>>
>>> datetime.timedelta(365).total_seconds() # 一年包含的總秒數(shù)
31536000.0
>>> dt = datetime.datetime.now()
>>> dt + datetime.timedelta(3) # 3天后
datetime.datetime(2017, 2, 8, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(-3) # 3天前
datetime.datetime(2017, 2, 2, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3) # 3小時(shí)后
datetime.datetime(2017, 2, 5, 12, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=-3) # 3小時(shí)前
datetime.datetime(2017, 2, 5, 6, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3, seconds=30) # 3小時(shí)30秒后 
datetime.datetime(2017, 2, 5, 12, 40, 10, 102821)

五、時(shí)間格式碼

time模塊的struct_time以及datetime模塊的datetime、date、time類都提供了strftime()方法,該方法可 以輸出一個(gè)指定格式的時(shí)間字符串。具體格式由一系列的格式碼(格式字符)組成,Python最終調(diào)用的是各個(gè)平臺(tái)C庫的strftme()函數(shù),因此各平臺(tái)對(duì)全套格式碼的支持會(huì)有所不同,具體情況需要參考該平臺(tái)上的strftime(3)文檔。下面列出了C標(biāo)準(zhǔn)(1989版)要求的所有格式碼,它們?cè)谒袠?biāo)準(zhǔn)C實(shí)現(xiàn)的平臺(tái)上都可以工作:

六、總結(jié)

那么Python中處理時(shí)間時(shí),使用time模塊好,還是用datetime模塊好呢?就我個(gè)人而言,datetime模塊基本上可以滿足需要,且用起來確實(shí)比較方便。對(duì)于time模塊,我只是在取當(dāng)前時(shí)間的時(shí)間戳?xí)r會(huì)用到time.time()方法,當(dāng)然也可以通過datetime.datetime.now().timestamp()來獲取,只是顯得復(fù)雜一點(diǎn)。我覺得還是看個(gè)人習(xí)慣吧,沒有什么絕對(duì)的好壞之分。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python f-string式格式化聽語音流程講解

    python f-string式格式化聽語音流程講解

    在本篇文章中小編給大家整理的是關(guān)于python f-string式格式化聽語音的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • 下載官網(wǎng)python并安裝的步驟詳解

    下載官網(wǎng)python并安裝的步驟詳解

    在本篇文章里小編給大家整理了關(guān)于下載官網(wǎng)python并安裝的步驟詳解,需要的朋友們參考學(xué)習(xí)下。
    2019-10-10
  • 基于Python實(shí)現(xiàn)m3u8視頻下載

    基于Python實(shí)現(xiàn)m3u8視頻下載

    m3u8?是一種基于文本的媒體播放列表文件格式,通常用于指定流媒體播放器播放在線媒體流,本文將利用Python實(shí)現(xiàn)m3u8視頻下載器,感興趣的可以了解一下
    2023-05-05
  • python使用thrift教程的方法示例

    python使用thrift教程的方法示例

    這篇文章主要介紹了python使用thrift教程的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 跟老齊學(xué)Python之字典,你還記得嗎?

    跟老齊學(xué)Python之字典,你還記得嗎?

    在python中,也有一種數(shù)據(jù)與此相近,不僅相近,這種數(shù)據(jù)的名稱就叫做dictionary,翻譯過來是字典,類似于前面的int/str/list,這種類型數(shù)據(jù)名稱是:dict
    2014-09-09
  • Python中三種花式打印的示例詳解

    Python中三種花式打印的示例詳解

    在Python中有很多好玩的花式打印,我們今天就來挑戰(zhàn)下面三個(gè)常見的花式打印。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-03-03
  • 使用Python繪制空氣質(zhì)量日歷圖

    使用Python繪制空氣質(zhì)量日歷圖

    這篇文章主要介紹了使用Python繪制空氣質(zhì)量日歷圖,文章基于Python繪制的相關(guān)知識(shí)展開對(duì)空氣質(zhì)量日歷圖的繪制,感興趣的小伙伴可以參考一下
    2022-05-05
  • Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例

    Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例

    今天小編就為大家分享一篇Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python?open讀取文件內(nèi)容時(shí)的mode模式解析

    python?open讀取文件內(nèi)容時(shí)的mode模式解析

    這篇文章主要介紹了python?open讀取文件內(nèi)容時(shí)的mode模式解析,Python可以使用open函數(shù)來實(shí)現(xiàn)文件的打開,關(guān)閉,讀寫操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • python計(jì)算階乘的兩個(gè)函數(shù)用法

    python計(jì)算階乘的兩個(gè)函數(shù)用法

    這篇文章主要介紹了python計(jì)算階乘的兩個(gè)函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論