python-03 时间相关模块

python-03 时间相关模块

一、datetime

1、datetime主要的类

可对date、time、datetime三种时间模式进行单独管理 ;

1
2
3
4
5
6
7
datetime.date() 处理日期(年月日) 

datetime.time() 处理时间(时分秒、毫秒)

datetime.datetime() 处理日期+时间

datetime.timedelta() 处理时段(时间间隔)

2、获取当前时间

1)获取当前时间

1
2
3
4
5
6
7
#获取今天的日期 
datetime.date.today()
datetime.datetime.now()

#修改日期格式
#使用strftime格式化
datetime.datetime.isoformat()

2)实例

1
2
3
4
5
6
7
8
9
10
11
>>> import datetime
>>> datetime.date.today()
datetime.date(2020, 1, 31)
>>> datetime.date.today().strftime('%Y-%m-%d %H-%M-%S')
'2020-01-31 00-00-00'
>>> datetime.datetime.now()
datetime.datetime(2020, 1, 31, 9, 13, 13, 248583)
>>> d=datetime.datetime.now()
>>> d.isoformat()
'2020-01-31T09:13:39.260538'
>>>

3、时间戳

  时间戳是指格林威治时间1970年01月01日 00时00分00秒起至现在的总秒数。

1)将日期转换成时间戳

1
2
3
4
5
#将时间转换成struct_time格式
timetuple函数

#返回用秒数来表示时间的浮点数
time.mktime函数

2)将时间戳转换成日期

1
2
3
4
5
6
7
8
9
10
#使用datetime.date.fromtimestamp()
>>> import time,datetime
>>> today=datetime.date.today()
>>> today.timetuple()
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=31, tm_isdst=-1)
>>> time.mktime(today.timetuple())
1580400000.0
>>> datetime.date.fromtimestamp(1580400000.0)
datetime.date(2020, 1, 31)
>>>

4、时间上的加减法

timedelta()方法;表示两个时间点的间隔

1
2
3
4
5
6
7
8
9
10
11
>>> import datetime
>>> today=datetime.datetime.now()
>>> yesterday=today-datetime.timedelta(days=1)
>>> print(yesterday)
2020-01-30 09:19:54.862064
>>> print(today)
2020-01-31 09:19:54.862064
>>> hours=today-datetime.timedelta(hours=1)
>>> print(hours)
2020-01-31 08:19:54.862064
>>>

二、calendar

1、calendar模块

1)跟日历相关的若干函数和类,可以生成文本形式的日历;

2)常用函数

1
2
3
4
calendar.calendar(<年>) 
calendar.month(<年>,<月>)
calendar.prmonth(<年>,<月>)
calendar.prcal(<年>)

2、制作电子日历

1)一个月

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
#使用的函数
calendar.month(<年>,<月>) 返回多行字符串
calendar.prmonth(<年>,<月>) 相当于print (calendar.month (<年>,<月>)

#完整代码
>>> import calendar
>>> calendar.month(2020,1)
' January 2020\nMo Tu We Th Fr Sa Su\n 1 2 3 4 5\n 6 7 8 9 10 11 12\n13 14 15 16 17 18 19\n20 21 22 23 24 25 26\n27 28 29 30 31\n'
>>> calendar.prmonth(2020,1)
January 2020
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 31
>>> print(calendar.month(2020,1))
January 2020
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 31

>>>

2)一整年

1
2
3
4
5
6
7
8
#使用的函数
calendar.calendar(<年>) 返回多行字符串
calendar.prcal(<年>) 相当于print (calendar.prcal (<年>))

#完整代码
>>> import calendar
>>> cal=calendar.calendar(2020)
>>> print(cal)

11Tu26.png

3、将日历列表化

1
2
3
4
5
6
7
8
9
10
11
12
13
#所用函数
calendar.monthcalendar()
返回某一年的某一个月份日历,是一个嵌套列表
最里层的列表含有七个元素,代表一周( 从周一到周日)
如果没有本月的日期,则为0

#实例代码
>>> import calendar
>>> calendar.monthcalendar(2018,9)
[[0, 0, 0, 0, 0, 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]]
>>>

#如上例中,2018年9月第一周前5天是8月份的末5天,因此显示为0;9月1号则是表示周六。

4、与日历相关的计算

1)判别闰年

1
2
3
4
5
6
7
8
9
10
11
12
13
#普通闰年:能被4整除但不能被100整除的年份
#世纪闰年:能被400整除的年份

#所用函数
calendar.isleap(<年>)

#实例代码
>>> import calendar
>>> calendar.isleap(2019)
False
>>> calendar.isleap(2020)
True
>>>

2)计算某月共有多少天,从周几开始

1
2
3
4
5
6
7
#从0开始,依次为周一、周二… 
>>> import calendar
>>> calendar.monthrange(2018,9)
(5, 30)
>>>

#上例中意思是,2018年9月从周六开始,一个月有30天。

3)计算某天是周几

1
2
3
4
5
6
7
#返回值为0~6,依次对应的是周一到周日
>>> import calendar
>>> calendar.weekday(2018,8,15)
2
>>>

#上例中的意思是,2018-8-15是周三

三、time

1、获取时间戳

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#所用函数
time.time()方法

#示例代码
import time
t1=time.time()
a=0
for i in range(0,10000):
a+=i
print(a)
t2=time.time()
print(t2-t1)
time.sleep(1)
t3=time.time()
print(t3-t1)

#运行结果
49995000
0.0009980201721191406
1.001060962677002

2、获取日期格式

1)获取当前时间

1
2
3
4
time.asctime()  
time.ctime()

out:'Mon Aug 13 16:01:27 2018'

2)将元组数据转化为日期

1
2
3
4
5
#这一系列的数值分别对应年、月、日、时、 分、秒、周几、一年中的第几天、是否为夏令时间。
t = (2018, 8, 13, 11, 42, 31, 0, 0, 0)
time.asctime(t)

out:'Mon Aug 13 11:42:31 2018'

3、利用索引获取时间信息

1
2
3
4
5
6
7
8
9
#struct_time类 

#实例代码
>>> import time
>>> time.localtime()
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=31, tm_hour=10, tm_min=15, tm_sec=28, tm_wday=4, tm_yday=31, tm_isdst=0)
>>> time.localtime()[0]
2020
>>>

4、让程序睡一会

1
# time.sleep()
欢迎打赏,谢谢
------ 本文结束------
0%