[Python基礎]time與datetime模組的函式說明及使用例項
time模組
模組time包含用於獲取當前時間,操作時間和日期.從字串中讀取日期,將日期格式化為字串的函式. 日期可表示為實數,也可表示為包含9個整數的元組 例如tuple(2018,12,24,12,2,56,-1,-1,-1) ------------------------------------------------------ 索引 欄位 值 0-----年-------如1999,2019 1-----月----------1~12 2-----日----------1~31 3-----時----------0~23 4-----分----------0~59 5-----秒----------0~61含閏一秒,閏二秒() 6-----星期-------0~6(0=星期一) 7-----儒略日----1~366 8-----夏令時----0,1,-1 使用-1時,mktime將自動轉換可能正確的值
常用函式的使用
from time import *
new_time=mktime((2018,11,5,10,30,0,-1,-1,-1)) #時間元組->秒
>>>new_time
1541385000.0
>>>localtime(new_time) #秒->時間元組
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=5, tm_hour=10, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=309, tm_isdst=0)
>>>asctime(localtime( new_time)) #時間元組->字串
'Mon Nov 5 10:30:00 2018'
>>>strptime('Mon Nov 5 10:30:00 2018') #字串->時間元組
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=5, tm_hour=10, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=309, tm_isdst=-1)
>>>time() #當前秒數
1541385068.0643497
>>>asctime(localtime(time()) ) #當前時間字串
'Mon Nov 5 10:31:21 2018'
例項:隨機返回指定範圍內的多個日期
import random
from time import *
from pprint import *
start = mktime((2018, 1, 1, 0, 0, 0, -1, -1, -1))
end = mktime((2018, 12, 31, 23, 59, 59, -1, -1, -1))
random_time = []
for i in range(5):
time_str = asctime(localtime(random.uniform(start, end)))
random_time.append(time_str)
pprint(random_time)
#輸出
['Wed Aug 29 01:18:44 2018',
'Sun Sep 16 02:44:16 2018',
'Sun Dec 30 12:53:29 2018',
'Wed May 2 04:00:02 2018',
'Sat Feb 17 03:39:50 2018']
datetime模組
datetime模組提供表示和處理日期和時間的一些類.此模組的大部分功能是關於建立和輸出日期與資訊的各種不同方式.其他的主要功能包括數學運算,如時間增量的比較和計算.
date物件
date物件代表由年,月,日組成的簡單日期.
函式使用
from datetime import *
new_date = date(2018, 1, 1)
>>>new_date #顯示日期
datetime.date(2018, 1, 1)
>>>new_date.today() #顯示今天日期
datetime.date(2018, 11, 5)
>>>new_date.ctime() #返回字串,與datetime.time.ctime()格式相同
'Mon Jan 1 00:00:00 2018'
>>>new_date.replace(1999,12) #替換年月日並返回新的日期
datetime.date(1999, 12, 1)
>>>new_date.timetuple() #將date轉換為time模組中的time.struct_time物件
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
>>>new_date.weekday() #返回一週內的星期 0-6
0
>>>random.uniform(date(2018,1,1),date(2018,12,31)) #隨機返回日期
datetime.date(2018, 6, 25)
time物件
time物件用於表示包含小時,分,秒和微秒的時間.
new_time=time(12,15,20) #時,分,秒,微秒(microsecond),時區資訊tzinfo()
new_time=time(hour=12,minute=15,second=20) #或者指定引數
>>>new_time
datetime.time(12, 15, 20)
>>>new_time.isoformat() #以""HH:MM:SS.mmmmmm""格式輸出字串
'12:15:20'
>>>new_time.replace(second=5) #替換部分值
datetime.time(12, 15, 5)
datetime物件
datetime物件用於表示日期和時間.
>>>datetime.now() #當前時間
datetime.datetime(2018, 11, 5, 11, 18, 18, 49217)
>>>dt = datetime(2018,11,5,11,20,30) #獨立構造
>>>dt
datetime.datetime(2018, 11, 5, 11, 20, 30)
>>>dt=datetime
>>>dt=datetime.combine(date(2018,12,1),time(15,30,30)) #組合構造
datetime.datetime(2018, 12, 1, 15, 30, 30)
>>>dt.date(),dt.time() #獲取date和time
(datetime.date(2018, 12, 1), datetime.time(15, 30, 30))
>>>dt.strftime("%Y-%m-%d %H:%M:%S") #格式化輸出
'2018-12-01 15:30:30'
timedelta物件
timedelta物件表示兩個日期或時間之間的差值.這些物件通常是使用 -運算子計算兩個datetime例項之間的差值時的結果 datetime模組的一個重要特性是:它支援設計日期的數學運算.date和datetime物件(time不支援)都支援以下操作: td = d1 - d2 返回timedelta物件 d2=d1 ± td 給date新增/減去timedelta d1 < or <= or == or != or > or >= d2 日期比較
例項:時間倒計時
from datetime import *
from time import sleep
def counter():
h, m, s = [int(n) for n in input("設定倒計時時間:").split(" ")]
start = timedelta(hours=h, minutes=m, seconds=s)
end = timedelta(seconds=0)
one_sec = timedelta(seconds=1)
print("開始計時")
while start > end:
print(start)
sleep(1) #睡眠-1s
start = start - one_sec
print("計時完畢")
>>>counter()
設定倒計時時間:0 0 5
開始計時
0:00:05
0:00:04
0:00:03
0:00:02
0:00:01
計時完畢
例項:顯示當前時間
def display_now():
while True:
sleep(1)
print(datetime.now().strftime("%H:%M:%S"))
>>display_now()
12:48:11
12:48:12
12:48:13
12:48:14
例項:使用calendar類顯示某月日曆
import calendar
import from pprint import *
>>>pprint(calendar.month(2018, 11))
(' November 2018\n'
'Mo Tu We Th Fr Sa Su\n'
' 1 2 3 4\n'
' 5 6 7 8 9 10 11\n'
'12 13 14 15 16 17 18\n'
'19 20 21 22 23 24 25\n'
'26 27 28 29 30\n')