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'
>>>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模块

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')

你可能感兴趣的:(Python)