日期和时间
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
Python中,对日期和时间的操作,主要使用这3个内置模块: datetime 、 time 和 calendar
获取当前时间对应的数字
开发程序时,经常需要获取两个代码位置在执行时的时间差,比如,我们想知道某个函数执行大概耗费了多少时间,就可以使用time.time()来做。
time.time() 会返回 从 1970年1月1日0点(所谓的epoch时间点) 到 当前时间的 经过的秒数 ,可以简称为秒数时间。 关于该函数的详细解释,请点击这里参考官方文档
指定格式字符串显示时间
以指定格式字符串显示时间,是非常常用的,比如日志里面的时间戳。
要得到 当前时间
对应的字符串,可以这样实现:
得到类似这样的字符串:'2018-06-30 23:10:08.911420'
如果要指定输出的时间格式,可以像下面这样
得到类似这样的字符串: '2019-02-24 ** 16:56:55'
当然,也可以使用time库来格式化显示字符串
数字表示的时间转化为字符串表示
如果要将某个指定秒数时间(从epoch时间点开始计算),而不是当前时间,转化为字符串格式,可以这样写
字符串时间转化为整数时间
反过来,如果要将字符串指定的时间,转化为秒数时间,可以这样
ISO格式 转化为 本地时间
有的时候,我们的程序获取的时间是 ISO 8601 格式的字符串。
比如:
其中, 2008-09-03T20:56:35.450686Z
这种 Z
结尾的是UTC时间(时区为0)
可以通过如下方法转化为 本地时区 的字符串
from datetime import datetime
iso_string = '2024-11-24T12:15:34Z'
# 转为 datetime.datetime 类型,UTC 时区
dt_utc = datetime.fromisoformat(iso_string)
# 转为 datetime.datetime 类型, 本地 时区
dt_local = dt_utc.astimezone()
# 格式化为 我们需要的字符串格式
dt_local.strftime('%Y-%m-%d %H:%M:%S')
简化代码就是
from datetime import datetime
iso_string = '2024-11-24T12:15:34Z'
retStr = datetime.fromisoformat(iso_string)\
.astimezone().strftime('%Y-%m-%d %H:%M:%S')
获取某个时间 对应 的年月日时分秒数字
要获取 当前时间
的 年、月、日、时、分、秒、星期几 对应的数字,可以使用datetime库
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2018, 6, 30, 23, 3, 54, 238947)
# 年
>>> datetime.now().year
2018
# 月
>>> datetime.now().month
6
# 日
>>> datetime.now().day
30
# 时
>>> datetime.now().hour
23
# 分
>>> datetime.now().minute
7
# 秒
>>> datetime.now().second
58
# 毫秒
>>> datetime.now().microsecond
151169
# 获取星期几用 weekday方法
# 0 代表星期一,1 代表星期二 依次类推
>>> datetime.now().weekday()
5
获得指定时间字符串对应星期几
如果要获取的是 某个指定时间,比如 "2018-6-24",而不是当前时间,对应的星期几,怎么办?
可以使用 datetime类的 strptime方法,先产生对应的 datetime对象
# 要计算出 2018年6月24日 是星期几
thatDay = "2018-6-24"
from datetime import datetime
# 先把字符串表示的日期转化为 datetime 对象
theDay = datetime.strptime(thatDay, "%Y-%m-%d")
#再获取星期几
theDay.weekday()