python中的datatime包
【摘要】 详解Python中的datatime包
目录
- datetime包的常用功能
- datetime包中的常用方法
- python的常用时间格式化符号
认识datetime包
- 日期与时间的结合体-date and time
- 获取当前时间
- 获取时间间隔
- 将时间对象转成时间字符串
- 将字符串转成时间类型
获取当前时间
导入包与模块:
from datetime import datetime
import datetime
使用方法:
datetime.now()
datetime.datetime.now() (today)
例子:返回当前年月日时分秒毫秒的datetime对象
In [1]: import datetime
In [2]: datetime.datetime.now()
Out[2]: datetime.datetime(2023, 5, 27, 21, 26, 31, 333349)
- 这个datetime并不在我们当前的目录下,我们又如何找到它的呢。实际上这是Python的一个内置的包。它会被Python安装在指定的一个目录下。包括未来我们安装下载的一些第三方包,也会被Python安装在指定的目录下。这些目录在我们平时使用脚本的时候,可直接通过from或者import就可以获取到。
获取时间间隔
- 导入包
from datetime import datetime
from datetime import timedelta
- 使用方法:
timeobj = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)
- 例子:返回时间间隔的datetime对象
In [21]: In [3]: from datetime import datetime
...:
...: In [4]: from datetime import timedelta
...:
...: In [6]: before_one_day = timedelta(days=1)
...:
...: In [7]: yestaday = datetime.now() - before_one_day
...:
...: In [8]: yestaday
Out[21]: datetime.datetime(2023, 5, 28, 11, 33, 49, 535466)
时间对象转字符串
- 时间对象之间可以做加法与减法的操作。但是时间对象有一个问题。它无法进行数据之间的传输。比如我们有一个a服务公司,想给B服务公司传一个时间。但是时间对象是无法传输的。必须把时间对象转成字符串才可以使用。比如2020-03-02.这样一个字符串传入之后别人才可以看得懂。
- 获取时间对象∶
from datetime import datetime
now = datetime.now()
- 时间转字符串:
date str = now.strftime(format)
- 例子:符合时间格式的字符串(能被时间格式匹配的字符串对象)
In [20]: In [10]: from datetime import datetime
...:
...: In [11]: date = datetime.now()
...:
...: In [12]: str_date = date.strftime('%Y-%m-%d %H:%M:%S')
...:
...: In [13]: str_date
Out[20]: '2023-05-28 11:32:42'
时间字符串转时间类型
- 获取时间模块:
from datetime import datetime
- 时间字符串转时间类型:
datetime.strptime(tt, format)
在使用striptime的时候,我们的格式符标准一定要和我们左边的字符串保持一致
在把字符串转化成时间对象的时候,如果要格式化为时间对象的时间字符串中没有哪些单位的数据,则格式化后的时间对象中将显示为00
- 参数介绍·
tt
: ==符合时间格式==的字符串format
:tt
时间字符串匹配规则
注意:format和字符串中的格式要一致
In [19]: In [14]: from datetime import datetime
...:
...: In [15]: str_date = '2023-5-28 20:24:34'
...:
...: In [16]: date_obj = datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')
...:
...: In [17]: date_obj
Out[19]: datetime.datetime(2023, 5, 28, 20, 24, 34)
时间格式符
实战
# coding:utf-8
# Time: 2023/5/28
# @Author: Dx
# @File:package_datetime.py
from datetime import datetime
from datetime import timedelta
now = datetime.now()
print(now, type(now))
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str, type(now_str))
now_obj = datetime.strptime(now_str, '%Y-%m-%d %H:%M:%S')
print(now_obj, type(now_obj))
print('===========================================')
three_days = timedelta(days=3) # 这个时间间隔是三天,可以代表三天前或三天后的范围
after_three_days = three_days + now
print(after_three_days)
after_three_days_str = after_three_days.strftime('%Y/%m/%d %H:%M:%S:%f')
print(after_three_days_str, type(after_three_days_str))
after_three_days_obj = datetime.strptime(after_three_days_str, '%Y/%m/%d %H:%M:%S:%f')
print(after_three_days_obj, type(after_three_days_obj))
print('===========================================')
before_three_days = now - three_days
print(before_three_days)
before_three_days_str = before_three_days.strftime('%Y/%m/%d %H:%M:%S:%f')
print(before_three_days_str, type(before_three_days_str), '=================')
before_three_days_obj = datetime.strptime(before_three_days_str, '%Y/%m/%d %H:%M:%S:%f')
print(before_three_days_obj, type(before_three_days_obj))
print('===========================================')
one_hour = timedelta(hours=1)
after_one_hour = now + one_hour
after_one_hour_str = after_one_hour.strftime('%H:%M:%S')
print(after_one_hour_str)
after_one_hour_obj = datetime.strptime(after_one_hour_str, '%H:%M:%S')
print(after_one_hour_obj, type(after_one_hour_obj))
# default_str = '2023 5 28 abc'
# default_obj = datetime.strptime(default_str, '%Y %m %d')
2023-05-28 20:55:59.620995 <class 'datetime.datetime'>
2023-05-28 20:55:59 <class 'str'>
2023-05-28 20:55:59 <class 'datetime.datetime'>
===========================================
2023-05-31 20:55:59.620995
2023/05/31 20:55:59:620995 <class 'str'>
2023-05-31 20:55:59.620995 <class 'datetime.datetime'>
===========================================
2023-05-25 20:55:59.620995
2023/05/25 20:55:59:620995 <class 'str'> =================
2023-05-25 20:55:59.620995 <class 'datetime.datetime'>
===========================================
21:55:59
1900-01-01 21:55:59 <class 'datetime.datetime'>
进程已结束,退出代码0
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)