模块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'
>>>NOW=localtime(time()) #格式化显示当前时间
>>>"{}_{}_{}_{}_{}_{}".format(NOW.tm_year,NOW.tm_mon,NOW.tm_mday,NOW.tm_hour,NOW.tm_min,NOW.tm_sec)
'2018_11_26_10_14_10'
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模块提供表示和处理日期和时间的一些类.此模块的大部分功能是关于创建和输出日期与信息的各种不同方式.其他的主要功能包括数学运算,如时间增量的比较和计算.
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对象用于表示包含小时,分,秒和微秒的时间.
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.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对象表示两个日期或时间之间的差值.这些对象通常是使用
-运算符计算两个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
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')