导入datetime有两种方式:导入datetime模块或直接导入datetime包:
from datetime import datetime
import datetime
使用方法:
datetime.now() # 导入模块后调用方法
datetime.datetime.now # 直接导入包后调用方法
注意,返回的是一个对象,一个类的实例化对象
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSvaOn6m-1659939067971)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808101413462.png)]](https://1000bd.com/contentImg/2022/08/12/110330500.png)
单使用获取时间间隔并没有什么用处,要配合获取当前时间来使用
使用方法:
from datetime import datetime
from datetime import timedelta # timedelta是一个函数
timeobj = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)
# 后面的参数分别代表天,秒,毫秒,微秒,分钟,小时,周;对应的值传入整型
# 返回的是一个间隔时间段的对象,一个类的实例化对象
例子:
获取前一天的当前时间:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AU9K7zsf-1659939067973)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808102910864.png)]](https://1000bd.com/contentImg/2022/08/12/110330634.png)
上面讲到的获取到的当前时间和时间间隔都是一个对象,而时间对象是无法进行传输的,我们需要将时间对象转换成字符串
方法:
时间对象.strftime(format)
# format为想要转成的格式,例如format为'%Y-%m-%d'时,会转换成‘年-月-日’格式
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwasTAeQ-1659939067974)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808105018017.png)]](https://1000bd.com/contentImg/2022/08/12/110330911.png)
时间字符串是无法进行加减法的,想要进行加减法,还需要将时间字符串转换成时间对象
方法:
from datetime import datetime
str_date = '2022-08-08 11:06:06'
date_obj = datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')
# datetime.striptime()返回的是个时间对象
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtRIktoF-1659939067975)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808113733053.png)]](https://1000bd.com/contentImg/2022/08/12/110331083.png)
注意:strptime(str, '%Y-%m-%d %H:%M:%S')左边字符串的格式一定要和右边参数的格式一致,否则会报错:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WA7RzrVS-1659939067977)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808113938649.png)]](https://1000bd.com/contentImg/2022/08/12/110331252.png)
时间格式字符除了上面提到的%Y %m %d %H %M %S外,代表年、月、日、时、分、秒,还有其他的字符,只不过不常用:
| 字符 | 描述 |
|---|---|
| %I | 一天中的第几个小时(12小时制,01~12),%H是24小时制 |
| %f | 毫秒 |
| %a | 简化的星期,如星期三Wed |
| %A | 完整的星期,如星期三Wednesday |
| %b | 简化的月份,如二月Feb |
| %B | 完整的月份,如二月February |
| %c | 本地日期和时间,如Wed Feb 5 10:14:28 2022 |
| %p | 显示的上午还是下午,AM/PM |
| %j | 一年中的第几天 |
| %U | 一年中的星期数 |
什么是时间戳?
时间戳就是从1970年1月1日00时00分00秒至今的总毫秒(秒)数
时间戳是float类型
方法:
from datetime import datetime
datetime.timestamp(datetime.now()) # 返回当前时间戳
方法:
from datetime import datetime
datetime.fromtimestamp(timestamp) # 返回时间对象
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYyvERPQ-1659939067979)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808140758599.png)]](https://1000bd.com/contentImg/2022/08/12/110331542.png)
方法:
import time
time.time()
# 返回秒级别的时间戳(浮点类型)
# 如果想获取毫秒级别的时间戳,只需要用秒级时间戳*1000即可
方法:
import time
time.localtime(timestamp)
# 传入一个时间戳,也可以不传,如果不传会默认当前时间
# 返回一个对象(time.struct_time),对象的属性有时间信息
time.localtime()返回的对象属性里有年月日时分秒等信息:
| 属性 | 描述 | 取值范围 |
|---|---|---|
| tm_year | 四位数年 | 2020 |
| tm_mon | 月 | 1~12 |
| tm_mday | 日 | 1~31 |
| tm_hour | 时 | 0~23 |
| tm_min | 分 | 0~59 |
| tm_sec | 秒 | 0~61 |
| tm_wday | 一周的第几天 | 0~6(0是周一) |
| tm_yday | 一年的第几日 | 1~366 |
| tm_isdst | 夏时令 | -1,0,1是否时夏时令 |
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wlBOW0Z-1659939067980)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808134742908.png)]](https://1000bd.com/contentImg/2022/08/12/110331854.png)
用法:
import time
time.sleep(second) # 传入希望暂停的秒数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYlPG8B4-1659939067981)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220808135208196.png)]](https://1000bd.com/contentImg/2022/08/12/110331973.png)
strftime使用方法:
import time
time.strftime(format, t)
# format--格式化时间标准; t--time.localtime()返回的时间对象
strptime使用方法:
import time
time.strptime(time_str, format)
# time_str--时间格式的字符串; format--与time_str一致的格式化时间标准
思考:datetime和time都功能类似,为什么还需要两个包呢?
答:在工作过程中,datetime常用于对日期的处理,而time常用于对时间的处理。