行业知识
python模块百科
python模块百科_基本日期时间类型datetime【上】
- 一、datetime --- 基本日期和时间类型
- 二、相关模块介绍
- 2.1 模块 calendar
- 2.2 模块 time
- 2.3 模块 zoneinfo
- 2.4 包 dateutil
- 三、感知型对象和简单型对象
- 3.1 感知型对象
- 3.2 简单型对象
- 3.3 确定一个对象是感知型还是简单型
- 四、常量
- 4.1 最小年份 datetime.MINYEAR
- 4.2 ���大年份 datetime.MAXYEAR
一、datetime — 基本日期和时间类型
源代码位置: Lib/datetime.py
()datetime 模块提供用于处理日期和时间的类。
在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。
()二、相关模块介绍
2.1 模块 calendar
calendar 模块为通用日历相关函数模块,提供了许多函数,可以进行日历的格式化、日期和时间的操作等
- 打印特定年份和月份的日历:
import calendarprint(calendar.month(2024,3))# 执行结果 March 2024Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 1718 19 20 21 22 23 2425 26 27 28 29 30 31
- 获取一年中的某个月有多少天:
import calendarprint(calendar.monthrange(2024, 3)[1])# 执行结果31
- 获取一年中的某个星期几是第几天:
import calendarprint(calendar.weekday(2024, 3, 1))# 执行结果【找到一只bug,2024年3月1日为周五】4
2.2 模块 time
time模块提供时间的访问和转换,用于处理时间相关的操作,可以获取当前时间、计算时间差、格式化时间等。
以下是一些使用time模块的示例:
- 获取当前时间的日期和时间:
import timeprint(time.localtime()) # 执行结果time.struct_time(tm_year=2024, tm_mon=3, tm_mday=1, tm_hour=14, tm_min=48, tm_sec=3, tm_wday=4, tm_yday=61, tm_isdst=0)
- 获取当前时间的时间戳(精确到微秒):
import timeprint(time.time() * 1000000) # 执行结果1709275696978506.0
- 获取当前时间的本地时间:
import timeprint(time.asctime()) # 执行结果Fri Mar 1 14:50:06 2024
2.3 模块 zoneinfo
zoneinfo模块用于处理时区,它在Python 3.9版本中引入。该模块提供了一个ZoneInfo类,用于表示一个特定的时区。
使用zoneinfo模块,你可以创建表示特定时区的对象,然后使用这些对象来转换本地时间到UTC时间或执行其他与时区相关的操作。
注意:使用zoneinfo模块,你的系统必须支持IANA时区数据库。如果系统上没有安装这个数据库,需要手动安装 IANA 时区数据库才能使用zoneinfo模块。
以下是一个使用zoneinfo模块的示例:
import zoneinfofrom datetime import datetime# 创建一个表示纽约时区的对象tz = zoneinfo.ZoneInfo("America/New_York")# 获取当前纽约时间ny_time = datetime.now(tz)print(ny_time)# 执行结果2024-03-01 01:54:58.815630-05:002.4 包 dateutil
dateutil提供对日期和时间的强大扩展功能。它为Python标准库中的datetime模块提供了许多有用的功能和增强,具有扩展时区和解析支持。
以下是一些dateutil的主要功能:
- 相对日期和时间解析:dateutil可以解析相对日期和时间字符串,例如“next week”、“last month”等。
- 日期间隔:提供了处理日期和时间间隔的函数和类,包括日期的增量和减量操作。
- 可变频率:支持定义和解析具有可变频率的时间序列,例如“每两周”、“每年第四个星期五”等。
- 时区处理:提供了对时区的强大支持,包括时区的解析、转换和格式化。
- 日期范围:可以轻松地获取两个日期之间的日期范围。
- 其他实用功能:还包括其他一些有用的功能,如日期和时间的格式化、解析、验证等。
要使用dateutil库,你需要首先安装它。你可以使用pip来安装:
pip install python-dateutil
一旦安装完成,你可以在Python代码中导入并使用dateutil提供的功能。例如,要使用相对日期解析,你可以这样做:
from dateutil import relativedeltafrom datetime import datetime# 获取当前时间now = datetime.now()# 计算从现在开始的10天后的时间future_time = now + relativedelta.relativedelta(days=10)print(future_time)# 执行结果2024-03-11 14:57:43.180994
三、感知型对象和简单型对象
日期和时间对象可以根据它们是否包含时区信息而分为“感知型”和“简单型”两类。
3.1 感知型对象
感知型 对象能相对于其他感知型对象来精确定位自身时间点,这需要掌握应用性算法和政治性时间调整信息例如时区和夏令时 。 感知型对象是用来表示一个没有解释空间的固定时间点。
3.2 简单型对象
简单型 对象没有包含足够多的信息来无歧义地相对于其他 date/time 对象来定位自身时间点。 不论一个简单型对象所代表的是世界标准时间(UTC)、当地时间还是某个其他时区的时间完全取决于具体程序,就像一个特定数字所代表的是米、英里还是质量完全取决于具体程序一样。 简单型对象更易于理解和使用,代价则是忽略了某些现实性考量。
比如
对于要求感知型对象的应用,datetime 和 time 对象具有一个可选的时区信息属性 tzinfo,它可被设为抽象类 tzinfo 的子类的一个实例。 这些 tzinfo 对象会捕获与 UTC 时间的差值、时区名称以及夏令时是否生效等信息。
datetime 模块只提供了一个具体的 tzinfo 类,即 timezone 类。 timezone 类可以表示具有相对于 UTC 的固定时差的简单时区,例如 UTC 本身或北美的 EST 和 EDT 时区等。 支持时间的详细程度取决于具体的应用。 世界各地的时间调整规则往往是政治性多于合理性,经常会发生变化,除了 UTC 之外并没有一个能适合所有应用的标准。
3.3 确定一个对象是感知型还是简单型
date 类型的对象都是简单型的。
time 或 datetime 类型的对象可以是感知型或者简单型。
一个 datetime 对象 d 在以下条件同时成立时将是感知型的:
- d.tzinfo 不为 None
- d.tzinfo.utcoffset(d) 不返回 None
在其他情况下,d 将是简单型的。
一个 time 对象 t 在以下条件同时成立时将是感知型的:
- t.tzinfo 不为 None
- t.tzinfo.utcoffset(None) 不返回 None。
在其他情况下,t 将是简单型的。
感知型和简单型之间的区别不适用于 timedelta 对象。
四、常量
datetime 模块具有以下常量
4.1 最小年份 datetime.MINYEAR
date 或者 datetime 对象允许的最小年份。 常量 MINYEAR 是 1
4.2 最大年份 datetime.MAXYEAR
date 或 datetime 对象允许最大的年份。常量 MAXYEAR 是 9999 。
may the odds be ever in your favor ~
上一篇:怎么进北冥服务器?
下一篇:怎么查看服务器连线情况?