Python的Datetime模块
1|0Datetime模块
Python官方的时间模块主要有time
和datetime
模块。time偏重于底层平台,模块中大多数函数会调用本地平台的C链接库,因此有些函数运行的结果,在不同的平台上会有所不同。datetime模块对time模块进行了封装,提供了高级API,因此本章重点介绍datetime模块。
datetime包含以下几个类:
- datetime:包含时间和日期
- date:只包含日期
- time:只包含时间
- timedelta:计算时间跨度
- tzinfo:时区信息
1|1datetime、date和time类
datetime类
构造方法:
datetime.datetime(year, month, day, hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
其中的year、month和day三个参数是不能省略的
PythonShell实例:
>>> import datetime
>>> dt = datetime.datetime(2018, 2, 29)
Traceback (most recent call last):
File "<pyshell#146>", line 1, in <module>
dt = datetime.datetime(2018, 2, 29)
ValueError: day is out of range for month
>>> dt = datetime.datetime(2018, 2, 28)
>>> dt
datetime.datetime(2018, 2, 28, 0, 0)
>>> print(dt)
2018-02-28 00:00:00
>>> type(dt)
<class 'datetime.datetime'>
dt = datetime.datetime(2018, 2, 29)
这一行抛出ValueError,是因为不存在2018年2月29号。
然后dt = datetime.datetime(2018, 2, 28)
这一天存在,所以dt的类型是datetime.datetime,输出用print
语句可以输出时间
一些datetime的类方法
- today():返回当前本地日期和时间
- now(tz=None):返回当前本地日期和时间,如果tz为None或未指定,则等同于today()
- utcnow():返回当前UTC1日期和时间
- fromtimestamp(timestamp, tz=None):返回UNIX时间戳2对应本地日期和时间
- utcfromtimestamp(timestamp):返回UNIX时间戳对应本地日期和时间对应的UTC日期和时间
Shell实例代码
>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2020, 4, 15, 22, 3, 32, 599159)
>>> datetime.datetime.now()
datetime.datetime(2020, 4, 15, 22, 3, 55, 881638)
>>> datetime .datetime.utcnow()
datetime.datetime(2020, 4, 15, 14, 4, 10, 894521)
>>> datetime.datetime.fromtimestamp(9999999999.999)
datetime.datetime(2286, 11, 21, 1, 46, 39, 999001)
>>> datetime.datetime.utcfromtimestamp(999999999.999)
datetime.datetime(2001, 9, 9, 1, 46, 39, 999000)
Date类
一个date对象可以表示日期等信息,创建date对象可以使用如下构造方法。
datetime.date(year, month, day)
其中year、month和day三个参数是不能省略的
Shell实例:
>>> import datetime
>>> d = datetime.date(2018, 2, 29)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
d = datetime.date(2018, 2, 29)
ValueError: day is out of range for month
>>> d = datetime.date(2018, 2, 28)
>>> print(d)
2018-02-28
>>> d
datetime.date(2018, 2, 28)
异常是因为没有29号。
注意:print和使用交互直接显示是不同的,直接交互是输出了类型,你可以试试type(d),会显示datetime.date类型,然后print直接输出了2018-02-28。
类方法
- date.today():返回本地日期(当前)
- date.fromtimestamp(timestamp):范湖与UNIX时间戳2对应的本地日期
>>> import datetime
>>> datetime.date.today()
datetime.date(2020, 4, 20)
>>> print(datetime.date.today())
2020-04-20
>>> datetime.date.fromtimestamp(999999.999)
datetime.date(1970, 1, 12)
>>> print(datetime.date.fromtimestamp(99999999.999))
1973-03-03
time类
构造方法
datetime.time(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo - None)
实例:
>>> import datetime
>>> datetime.time(24, 59, 58, 1999)
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
datetime.time(24, 59, 58, 1999)
ValueError: hour must be in 0..23
>>> datetime.time(23, 59, 58, 1999)
datetime.time(23, 59, 58, 1999)
异常因为一天不超过24小时
1|2日期时间计算
如果想知道10天之后是那一天,或者想知道2018年1月1日前5周是那一天,就要用到timedelta类,用来计算对象时间间隔
构造方法:
datetime.timedelta(days = 0, seconds = 0, microseconds = 0, milliseconds = 0, minutes = 0, hours = 0, weeks = 0)
test:
>>> import datetime
>>> datetime.date.today()
datetime.date(2020, 4, 20)
>>> d = datetime.date.today()
>>> delta = datetime.timedelta(10)
>>> d += delta
>>> print(d)
2020-04-30
>>> d = datetime.date(2018, 1, 1)
>>> delta = datetime.timedelta(weeks = 5)
>>> d -= delta
>>> print(d)
2017-11-27
⛅️是不是发现写的不怎么样了?确实是,我确实有点晕了,哈哈⛅️
解释:
d是获取日期,然后将d+delta就是增加,d-delta就是相减
后面的搞不明白了……😓
UTC——协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。中国大陆采用ISO 8601-1988的《数据元和交换格式信息交换日期和时间表示法》(GB/T 7408-1994)称之为国际协调时间,代替原来的GB/T 7408-1994;中国台湾采用CNS 7648的《资料元及交换格式–资讯交换–日期及时间的表示法》,称之为世界统一时间。
u.com/item/世界时/692237)的一种时间计量系统。中国大陆采用ISO 8601-1988的《数据元和交换格式信息交换日期和时间表示法》(GB/T 7408-1994)称之为国际协调时间,代替原来的GB/T 7408-1994;中国台湾采用CNS 7648的《资料元及交换格式–资讯交换–日期及时间的表示法》,称之为世界统一时间。 ↩︎时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不可否认” 服务。 ↩︎ ↩︎
__EOF__
作 者:Aeterna
出 处:https://www.cnblogs.com/coding365/p/12872206.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步