一、概要
python中的time,datetime提供了简单和复杂的方式操作日期和时间的类。虽然支持日期和时间算法,但我们的学习的重点是获取日期和时间,用于输出格式和操作。
datetime模块定义了以下几个类:
类名称 描述 datetime.datetime 表示日期时间 datetime.date 表示日期,常用的属性有:year, month和day datetime.time 表示时间,常用属性有:hour, minute, second, microsecond datetime.timedelta 表示两个date、time、datetime实例之间的时间间隔, datetime.tzinfo 时区相关信息对象的抽象基类。它们由datetime和time类使用, datetime.timezone Python 3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量
二、time
1、说明
time类表示时间,由时、分、秒以及微秒组成,
在Python中,通常有这几种方式来表示时间:
- 时间戳(相对于1970.1.1 00:00:00以秒计算的偏移量,时间戳是惟一的,如:1382678303.098)
- 时间元组(struct_time)共九个元素。例如time.struct_time(tm_year=2019, tm_mon=3, tm_mday=11, tm_hour=17, tm_min=3, tm_sec=20, tm_wday=0, tm_yday=70, tm_isdst=0)
- 格式化的时间字符串(重点)
注意:由于Python的time模块实现主要调用C库,所以各个平台可能有所不同
2、时间戳
说明
获取时间戳
1
2
3import time
# #时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年
time.time()
3、时间元组
说明
用一个元组装起来的9组数字处理时间
字段 属性 值 4位年数 tm_year 2017 月 tm_mon 1到12 日 tm_mday 1到31 小时 tm_hour 0到23 分钟 tm_min 0到59 秒 tm_sec 0到61(60或61是润秒) 一周的第几日 tm_wday 0到6(0是周一) 一年的第几日 tm_yday 1到366,一年中的第几天 夏令时 tm_isdst 是否为夏令时,值为1时是夏令时,值为0时不是夏令时,默认为-1 获取时间元组
1
2print(time.localtime())
# time.struct_time(tm_year=2019, tm_mon=3, tm_mday=17, tm_hour=21, tm_min=42, tm_sec=33, tm_wday=6, tm_yday=76, tm_isdst=0)时间戳转化成时间元组
1
2
3
4# localtime的函数
struct = time.localtime(time.time())
print(struct)
# time.struct_time(tm_year=2019, tm_mon=3, tm_mday=17, tm_hour=20, tm_min=14, tm_sec=47, tm_wday=6, tm_yday=76, tm_isdst=0)
将时间元组转化成时间戳 mktime()
1
2
3
4import time
tup_time = time.localtime()
time2 = time.mktime(tup_time)
print(time2)
4、格式化的时间(重点)
说明
获取可读的时间格式
将时间戳转化成可读性的时间asctime()
1
2
3
4import time
print(time.asctime(time.localtime(time.time())))
# 星期,月, 日, 时间, 年
# Mon Nov 16 23:17:57 2020将时间戳转化成指定格式的字符串
1
2
3time.strftime(format[, t])
# format 格式
# t 时间格式化符号
符号 说明 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00-59) %S 秒(00-59) 1
2
3
4
5
6
7
8
9
10
11
12
13
14import time
# 获取完整的年月日时分秒
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
# 获取年-月-日
print(time.strftime('%Y-%m-%d',time.localtime()))
print(time.strftime('%Y',time.localtime())) #获取完整年份
print(time.strftime('%y',time.localtime())) #获取简写年份
print(time.strftime('%m',time.localtime())) #获取月
print(time.strftime('%d',time.localtime())) #获取日
print(time.strftime('%H',time.localtime())) #获取时,24小时制
print(time.strftime('%I',time.localtime())) #获取时,12小时制
print(time.strftime('%M',time.localtime())) #获取分
print(time.strftime('%S',time.localtime())) #获取秒
print(time.strftime('%H:%M:%S',time.localtime())) #获取时:分:秒将指定字符串转化成时间戳
1
2
3
4
5
6
7import time
t = "2019-3-15 18:30:00"
#将其转换为时间元组
time_struct = time.strptime(t, "%Y-%m-%d %H:%M:%S")
# 转换为时间戳:
stamp = int(time.mktime(time_struct))
print(stamp)
5、延迟执行
说明
数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间
示例代码
1
2# 延迟5秒执行
time.sleep(5)
三、date
1、说明
表示年、月、日的日期对象,需要导入datetime模块
属性 | 取值范围 | 说明 |
---|---|---|
year | datetime.MINYEAR <= year <= datetime.MAXYEAR | 超出范围报错 |
month | 1 <= month <= 12 | 超出范围报错 |
day | 1 <= day <= 给定年月的天数 | 超出范围报错 |
2、常用的方法
2.1、today
说明
静态方法、返回当前的日期
语法格式
1
date.today()
返回值
返回一个date类型
示例代码
1
2
3
4
5
6
7import datetime
today = datetime.date.today()
print(today)
print(type(today))
# 等价于 datetime.date.fromtimestamp(time.time())
today = datetime.date.fromtimestamp(time.time())
print(today)
2.2、其它
说明
获取年,获取月,获取日
示例代码
1
2
3
4today = datetime.date.today()
print(today.year)
print(today.month)
print(today.day)
四、datetime
说明
datetime
从字面意思上看是
date和
time创建日期操作
1
2# 语法
# datetime.datetime(year,month,day,hour,minute,second,microsecond,)常见操作
1
2
3
4
5
6
7
8
9
10
11
12# 获取当前系统的年与日时分秒微秒
print(datetime.datetime.today())
# 获取当前系统的年与日时分秒微秒
print(datetime.datetime.now())
# 通过时间戳转化成日期对象
print(datetime.datetime.fromtimestamp(time.time()))
# 获取 当前的时间
print(datetime.datetime.now().time())
# 获取当前的日期
print(datetime.datetime.now().date())
print(type(datetime.datetime.strptime('2019-03-21', '%Y-%m-%d')))