在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Python日期和時(shí)間
Python異常處理
Python循環(huán)
Python基本運(yùn)算符
Python網(wǎng)絡(luò)編程(Sockets)
Python可以開發(fā)哪些程序?
Python XML解析和處理
Python數(shù)字
Python函數(shù)
Python變量類型
Python os模塊方法
Python迭代器
Python安裝和環(huán)境配置
Python構(gòu)造函數(shù)
Python文件對(duì)象方法
Python日期和時(shí)間
Python的歷史
Python生成器
Python+MySQL數(shù)據(jù)庫操作(PyMySQL)
Python命令行參數(shù)
Python元組
Python發(fā)送郵件
Python列表
Python文件讀寫
Python教程
Python面向?qū)ο螅惡蛯?duì)象)
Python多線程編程
Python多重繼承
Python決策
Python是什么?
Python快速入門
Python繼承
Python字典
Python字符串
Python操作符重載
Python正則表達(dá)式
Python閉包
Python修飾器
Python功能特點(diǎn)
Python模塊

Python日期和時(shí)間

Python程序可以通過多種方式處理日期和時(shí)間。日期格式之間的轉(zhuǎn)換是計(jì)算機(jī)常見問題。Python的時(shí)間(time)和日歷(calendar)模塊可用于跟蹤日期和時(shí)間。

一些常用代碼示例

#!/usr/bin/python3
#coding=utf-8

import time  
import datetime  

starttime = datetime.datetime.now()  

time.sleep(5)  

endtime = datetime.datetime.now()  
print ((endtime - starttime).seconds )
  • 計(jì)算十天之后的日期時(shí)間
#!/usr/bin/python3
#coding=utf-8

import time  
import datetime  

d1 = datetime.datetime.now()  
d3 = d1 + datetime.timedelta(days =10)  

print (str(d3))
print (d3.ctime())
  • 獲取兩個(gè)日期時(shí)間的時(shí)間差
t = (datetime.datetime(2019,1,13,12,0,0) - datetime.datetime.now()).total_seconds()
print ("t = ", t)
## 輸出結(jié)果
t = 49367780.076406

Python中有提供與日期和時(shí)間相關(guān)的4個(gè)模塊。它們分別是 -

模塊 說明
time time是一個(gè)僅包含與日期和時(shí)間相關(guān)的函數(shù)和常量的模塊,在本模塊中定義了C/C++編寫的幾個(gè)類。 例如,struct_time類。
datetime datetime是一個(gè)使用面向?qū)ο缶幊淘O(shè)計(jì)的模塊,可以在Python中使用日期和時(shí)間。它定義了幾個(gè)表示日期和時(shí)間的類。
calendar 日歷是一個(gè)提供函數(shù)的模塊,以及與Calendar相關(guān)的幾個(gè)類,它們支持將日歷映像生成為text,html,….
locale 該模塊包含用于格式化或基于區(qū)域設(shè)置分析日期和時(shí)間的函數(shù)。

1. 時(shí)間間隔

時(shí)間間隔是以秒為單位的浮點(diǎn)數(shù)。 從1970年1月1日上午12:00(epoch),這是一種時(shí)間的特殊時(shí)刻表示。

在Python中,當(dāng)前時(shí)刻與上述特殊的某個(gè)時(shí)間點(diǎn)之間以秒為單位的時(shí)間。這個(gè)時(shí)間段叫做Ticks。

time模塊中的time()函數(shù)返回從1970年1月1日上午12點(diǎn)開始的秒數(shù)。

# Import time module.
import time;

# Seconds
ticks = time.time()


print ("Number of ticks since 12:00am, January 1, 1970: ", ticks)

執(zhí)行上面代碼,得到以下結(jié)果 -

Number of ticks since 12:00am, January 1, 1970:  1497970093.6243818

但是,這個(gè)形式不能表示在時(shí)代(1970年1月1日上午12:00)之前的日期。在未來的日子也不能以這種方式表示 - 截止點(diǎn)是在2038年的UNIX和Windows的某個(gè)時(shí)刻。

2. 什么是TimeTuple?

許多Python時(shí)間函數(shù)將時(shí)間處理為9個(gè)數(shù)字的元組,如下所示:

索引 字段
0 4位數(shù),表示年份 2018,2019…
1 月份 1 ~ 12
2 日期 1 ~ 31
3 小時(shí) 0 ~ 23
4 分鐘 0 ~ 59
5 0 ~ 61(6061是閏秒)
6 星期幾 0 ~ 6(0是星期一)
7 一年的第幾天 1 ~ 366(朱利安日)
8 夏令時(shí) -1,0,1,-1表示庫確定DST

一個(gè)示例

import time
print (time.localtime());

這將產(chǎn)生如下結(jié)果:

time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9, 
   tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

上面的元組相當(dāng)于struct_time結(jié)構(gòu)。此結(jié)構(gòu)具有以下屬性 -

索引 字段
0 tm_year 2018,2019…
1 tm_mon 1 ~ 12
2 tm_mday 1 ~ 31
3 tm_hour 0 ~ 23
4 tm_min 0 ~ 59
5 tm_sec 0 ~ 61(6061是閏秒)
6 tm_wday 0 ~ 6(0是星期一)
7 tm_yday 1 ~ 366(朱利安日)
8 tm_isdst -1,0,1,-1表示庫確定DST

能用圖片說明白的盡量用圖片說明 -

2.1.獲取當(dāng)前時(shí)間

要將從時(shí)間浮點(diǎn)值開始的秒數(shù)瞬間轉(zhuǎn)換為時(shí)間序列,將浮點(diǎn)值傳遞給返回具有所有有效九個(gè)項(xiàng)目的時(shí)間元組的函數(shù)(例如本地時(shí)間)。

#!/usr/bin/python3
import time

localtime = time.localtime(time.time())
print ("Local current time :", localtime)

# 當(dāng)前時(shí)間
curtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print (curtime)

執(zhí)行上面代碼,這將產(chǎn)生如下結(jié)果 -

Local current time : time.struct_time(tm_year=2017, tm_mon=6, tm_mday=20, tm_hour=23, tm_min=9, tm_sec=36, tm_wday=1, tm_yday=171, tm_isdst=0)
Curtime is =>  2017-06-20 23:09:36

2.2.獲取格式化時(shí)間

可以根據(jù)需要格式化任何時(shí)間,但也可使用可讀格式獲取時(shí)間的簡單方法是 - asctime() -

#!/usr/bin/python3
import time

localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)

執(zhí)行上面代碼,這將產(chǎn)生如下結(jié)果 -

Local current time : Mon Feb 15 10:32:13 2018

2.3.獲取一個(gè)月的日歷

calendar模塊提供了廣泛的方法來顯示年歷和月度日歷。 在這里,將打印一個(gè)給定月份的日歷(2021年11月) -

#!/usr/bin/python3
import calendar

cal = calendar.month(2021, 11)
print ("Here is the calendar:")
print (cal)

執(zhí)行上面代碼后,將輸出以下結(jié)果 -

   November 2021
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

3.時(shí)間模塊

Python中有一個(gè)受歡迎的時(shí)間(time)模塊,它提供了處理時(shí)間和表示之間轉(zhuǎn)換的功能。以下是所有時(shí)間(time)可用方法的列表。

編號(hào) 方法 描述
1 time.altzone 本地DST時(shí)區(qū)的偏移量(以秒為單位的UTC),如果定義了有一個(gè)定義的話。 如果本地的DST時(shí)區(qū)是UTC的東部(如在西歐,包括英國),那么它是負(fù)數(shù)值。
2 time.asctime([tupletime]) 接受時(shí)間元組,并返回一個(gè)可讀的24個(gè)字符的字符串,例如’Tue Dec 11 22:07:14 2019’。
3 time.clock( ) 將當(dāng)前CPU時(shí)間返回為浮點(diǎn)數(shù)秒。 為了測量不同方法的計(jì)算成本,time.clock的值比time.time()的值更有用。
4 time.ctime([secs]) 類似于asctime(localtime(secs)),而沒有參數(shù)就像asctime()
5 time.gmtime([secs]) 接受從時(shí)代(epoch)以秒為單位的瞬間,并返回與UTC時(shí)間相關(guān)的時(shí)間元組t。 注 - t.tm_isdst始終為0
6 time.localtime([secs]) 接受從時(shí)代(epoch)以秒為單位的瞬間,并返回與本地時(shí)間相關(guān)的時(shí)間t(t.tm_isdst01,具體取決于DST是否適用于本地規(guī)則的瞬時(shí)秒)。
7 time.mktime(tupletime) 接受在本地時(shí)間表示為時(shí)間元組的瞬間,并返回浮點(diǎn)值,該時(shí)間點(diǎn)以秒為單位表示。
8 time.sleep(secs) 暫停調(diào)用線程secs秒。
9 time.strftime(fmt[,tupletime]) 接受在本地時(shí)間表示為時(shí)間元組的瞬間,并返回一個(gè)表示由字符串fmt指定的時(shí)間的字符串。
10 time.strptime(str,fmt = ‘%a %b %d %H:%M:%S %Y’)“) 根據(jù)格式字符串fmt解析str,并返回時(shí)間元組格式的時(shí)間。
11 time.time( ) 返回當(dāng)前時(shí)間時(shí)刻,即從時(shí)代(epoch)開始的浮點(diǎn)數(shù)秒數(shù)。
12 time.tzset() 重置庫例程使用的時(shí)間轉(zhuǎn)換規(guī)則。環(huán)境變量TZ指定如何完成。

時(shí)間(time)模塊有兩個(gè)重要的屬性可用。它們是 -

編號(hào) 屬性 描述
1 time.timezone 屬性time.timezone是UTC和本地時(shí)區(qū)(不含DST)之間的偏移量(美洲為 > 0,歐洲,亞洲,非洲大部分地區(qū)為 0)。
2 time.tzname 屬性time.tzname是一對(duì)與區(qū)域相關(guān)的字符串,它們分別是沒有和具有DST的本地時(shí)區(qū)的名稱。

4.日歷模塊

calendar模塊提供與日歷相關(guān)的功能,包括為給定的月份或年份打印文本日歷的功能。

默認(rèn)情況下,日歷將星期一作為一周的第一天,將星期日作為最后一天。 如果想要更改這個(gè),可調(diào)用calendar.setfirstweekday()函數(shù)設(shè)置修改。

以下是calendar模塊可用的功能函數(shù)列表 -

編號(hào) 函數(shù) 描述
1 calendar.calendar(year,w = 2,l = 1,c = 6) 返回一個(gè)具有年份日歷的多行字符串格式化為三列,以c個(gè)空格分隔。 w是每個(gè)日期的字符寬度; 每行的長度為21 * w + 18 + 2 * c,l是每周的行數(shù)。
2 calendar.firstweekday( ) 返回當(dāng)前設(shè)置每周開始的星期。默認(rèn)情況下,當(dāng)日歷首次導(dǎo)入時(shí)設(shè)置為:0,表示為星期一。
3 calendar.isleap(year) 如果給定年份(year)是閏年則返回True; 否則返回:False。
4 calendar.leapdays(y1,y2) 返回在范圍(y1,y2)內(nèi)的年份中的閏年總數(shù)。
5 calendar.month(year,month,w = 2,l = 1) 返回一個(gè)多行字符串,其中包含年份月份的日歷,每周一行和兩個(gè)標(biāo)題行。 w是每個(gè)日期的字符寬度; 每行的長度為7 * w + 6。 l是每周的行數(shù)。
6 calendar.monthcalendar(year,month) 返回int類型的列表。每個(gè)子列表表示一個(gè)星期。年份月份以外的天數(shù)設(shè)置為0; 該月內(nèi)的日期設(shè)定為月份的第幾日:1 ~ 31。
7 calendar.monthrange(year,month) 返回兩個(gè)整數(shù)。第一個(gè)是年度月(month)的星期幾的代碼; 第二個(gè)是當(dāng)月的天數(shù)。表示星期幾為0(星期一)至6(星期日); 月份是112。
8 calendar.prcal(year,w = 2,l = 1,c = 6) 類似于:calendar.calendar(year,w,l,c)的打印。
9 calendar.prmonth(year,month,w = 2,l = 1) 類似于:calendar.month(year,month,w,l)的打印。
10 calendar.setfirstweekday(weekday) 將每周的第一天設(shè)置為星期幾的代碼。 星期幾的代碼為0(星期一)至6(星期日)。
11 calendar.timegm(tupletime) time.gmtime的倒數(shù):以時(shí)間元組的形式接受時(shí)刻,并返回與從時(shí)代(epoch)開始的浮點(diǎn)數(shù)相同的時(shí)刻。
12 calendar.weekday(year,month,day) 返回給定日期的星期幾的代碼。星期幾的代碼為0(星期一)至6(星期日); 月數(shù)是1(1月)到12(12月)。

5.其他模塊和功能

如果您有興趣,那么可以在Python中找到其他重要的模塊和功能列表,其中包含日期和時(shí)間。以下列出其它有用的模塊 -

  • datetime模塊
  • pytz模塊
  • dateutil模塊