- Python 教程
- Python 教程
- Python - 概述
- Python - 历史
- Python - 特性
- Python 与 C++
- Python - Hello World 程序
- Python - 应用领域
- Python 解释器及其模式
- Python - 环境设置
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 文字
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 按位运算符
- Python - 成员资格运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if-else 语句
- Python - 嵌套 if 语句
- Python - Match-Case 语句
- Python - 循环
- Python - For 循环
- Python for-else 循环
- Python - While 循环
- Python - break 语句
- Python - Continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数和模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 任意或可变长度参数
- Python - 变量范围
- Python - 函数注释
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 切片字符串
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表项
- Python - 更改列表项
- Python - 添加列表项
- Python - 删除列表项
- Python - 循环列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 联接列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组(Tuple )
- Python - 访问元组项
- Python - 更新元组
- Python - 解压缩元组项
- Python - 循环元组
- Python - 联接元组
- Python - 元组方法
- Python - 元组练习
- Python 集
- Python - 集(sets)
- Python - 访问 Set Items
- Python - 添加 Set Items
- Python - 删除 Set Items
- Python - 循环 Set Items
- Python - 联接 Sets
- Python - 复制 Set
- Python - Set 运算符
- Python - Set 方法
- Python - Set 的练习
- Python 字典
- Python - 字典
- Python - 访问字典项
- Python - 更改字典项
- Python - 添加字典项
- Python - 删除字典项
- Python - 字典视图对象
- Python - 循环字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组项
- Python - 添加数组项
- Python - 删除数组项
- Python - 循环数组
- Python - 复制数组
- Python - 反向数组
- Python - 对数组进行排序
- Python - 连接数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python OS 文件/目录方法
- Python - os.path 方法
- 面向对象编程
- Python - OOP 概念
- Python - 类和对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态性
- Python - 方法覆盖
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 软件包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误和异常
- Python - 语法错误
- Python - 异常处理
- Python - try-except 块
- Python - try-finally 块
- Python - 引发异常
- Python - 异常链接
- Python - 嵌套 try 块
- Python - 用户定义的异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 联接线程
- Python - 命名线程
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护程序线程
- Python - 同步线程
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 杂项
- Python - 日期和时间
- Python - math 模块
- Python - 迭代器
- Python - 生成器
- Python - 闭包(closures)
- Python - 装饰器( Decorators)
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送电子邮件
- Python - 更多扩展
- Python - 工具/实用程序
- Python - 图形用户界面
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用 Metaclasses 进行元编程
- Python - 模拟和存根
- Python - 猴子修补
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - 人性化软件包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
Python - 日期和时间
Python 程序可以通过多种方式处理日期和时间。在日期格式之间进行转换是计算机的常见苦差事。Python 标准库中的以下模块处理与日期和时间相关的处理 -
- DateTime 模块
- 时间模块
- 日历模块
什么是时间间隔
时间间隔是以秒为单位的浮点数。特定的时刻以秒数表示,自 1970 年 1 月 1 日凌晨 12:00(纪元)。
Python 中提供了一个流行的 time 模块,它提供了用于处理时间以及在表示之间进行转换的函数。函数 time.time() 返回自 1970 年 1 月 1 日凌晨 12:00(纪元)以来的当前系统时间(以刻度为单位)。
例
import time # This is required to include time module.
ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
这将产生如下结果——
日期算术很容易用刻度来完成。但是,纪元之前的日期不能以此形式表示。遥远未来的日期也不能以这种方式表示 - UNIX 和 Windows 的截止点是 2038 年的某个时间。
什么是 TimeTuple?
许多 Python 的时间函数将时间处理为由 9 个数字组成的元组,如下所示 -
Index | 字段 | 值 |
---|---|---|
0 | 4 位数字年份 | 2016 |
1 | 月 | 1 to 12 |
2 | 日 | 1 to 31 |
3 | 小时 | 0 to 23 |
4 | 分钟 | 0 to 59 |
5 | 秒 | 0 to 61 (60 or 61 are leap-seconds) |
6 | 星期几 | 0 to 6 (0 is Monday) |
7 | 一年中的某天 | 1 to 366 (Julian day) |
8 | 夏令时 | -1, 0, 1, -1 means library determines DST |
例如
>>>import time
>>> print (time.localtime())
这将产生如下输出 -
上述 Tuples 等效于 struct_time 结构。此结构具有以下属性 -
Index | 属性 | 值 |
---|---|---|
0 | tm_year | 2016 |
1 | tm_mon | 1 to 12 |
2 | tm_mday | 1 to 31 |
3 | tm_hour | 0 to 23 |
4 | tm_min | 0 to 59 |
5 | tm_sec | 0 to 61 (60 or 61 are leap-seconds) |
6 | tm_wday | 0 to 6 (0 is Monday) |
7 | tm_yday | 1 to 366 (Julian day) |
8 | tm_isdst | -1, 0, 1, -1 means library determines DST |
获取当前时间
要将自纪元浮点值以来的秒数的时间瞬间转换为时间元组,请将浮点值传递给一个函数(例如,localtime),该函数返回一个包含所有有效九项的时间元组。
import time
localtime = time.localtime(time.time())
print ("Local current time :", localtime)
这将产生以下结果,该结果可以格式化为任何其他可显示的形式 -
获取格式化的时间
您可以根据需要随时格式化,但以可读格式获取时间的一种简单方法是 asctime() -
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)
这将产生以下输出 -
获取一个月的日历
calendar 模块提供了多种方法来使用年历和月历。在这里,我们打印给定月份(2008 年 1 月)的日历。
import calendar
cal = calendar.month(2023, 4)
print ("Here is the calendar:")
print (cal)
这将产生以下输出 -
April 2023
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
time 模块
Python 中提供了一个流行的 time 模块,它提供了用于处理时间和在表示之间进行转换的函数。这是所有可用方法的列表。
函数 | 描述 |
---|---|
time.altzone | 本地 DST 时区的偏移量,以 UTC 以西的秒为单位(如果已定义)。如果本地 DST 时区位于 UTC 以东(如西欧,包括英国),则为负数。仅当 daylight 为非零时才使用此选项。 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的 24 个字符的字符串,例如 'Tue Dec 11 18:07:14 2008'。 |
time.clock( ) | 以浮点秒数的形式返回当前 CPU 时间。为了衡量不同方法的计算成本,time.clock 的值比 time.time() 的值更有用。 |
time.ctime([secs]) | 类似于 asctime(localtime(secs)),没有参数类似于 asctime( ) |
time.gmtime([secs]) | 接受自纪元以来以秒数表示的时刻,并返回带有 UTC 时间的时间元组 t。注意 : t.tm_isdst 始终为 0 |
time.localtime([secs]) | 接受自纪元以来以秒为单位表示的时刻,并返回具有本地时间(t.tm_isdst为 0 或 1,具体取决于 DST 是否根据本地规则应用于即时秒)的时间元组 t。 |
time.mktime(tupletime) | 接受以本地时间表示为时间元组的时刻,并返回一个浮点值,其中的时刻以自纪元以来的秒数表示。 |
time.sleep(secs) | 暂停调用线程 secs 秒。 |
time.strftime(fmt[,tupletime]) | 接受以本地时间表示为时间元组的时刻,并返回表示由 string fmt 指定的时刻的字符串。 |
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') | 根据格式字符串 fmt 解析 str 并返回时间元组格式的时刻。 |
time.time( ) | 返回当前时间时刻,即自 epoch 以来的浮点秒数。 |
time.tzset() | 重置库例程使用的时间转换规则。环境变量 TZ 指定如何执行此操作。 |
让我们简要地介绍一下这些功能。
time 模块有两个重要的属性可用。他们是 −
属性 | 描述 |
---|---|
time.timezone | 属性 time.timezone 是本地时区(不含 DST)与 UTC(美洲为 >0;欧洲、亚洲、非洲大部分地区为 <=0)的偏移量(以秒为单位)。 |
time.tzname | 属性 time.tzname 是一对与区域设置相关的字符串,它们分别是没有 DST 和有 DST 的本地时区的名称。 |
calendar 模块
calendar 模块提供与日历相关的功能,包括打印给定月份或年份的文本日历的功能。
默认情况下,calendar 将星期一作为一周的第一天,将星期日作为最后一天。要更改此设置,请调用 calendar.setfirstweekday() 函数。
以下是 calendar 模块可用的功能列表 -
函数 | 描述 |
---|---|
calendar.calendar(year,w=2,l=1,c=6) | 返回一个多行字符串,其中 year 的日历格式为 3 列,用 c 空格分隔。w 是每个日期的字符宽度;每条线路的长度为 21*W+18+2*C。L 是每周的线路数。 |
calendar.firstweekday( ) | 返回每周开始的工作日的当前设置。默认情况下,首次导入日历时,该值为 0,表示星期一。 |
calendar.isleap(year) | 如果 year 是闰年,则返回 True;否则为 False。 |
calendar.leapdays(y1,y2) | 返回 (y1,y2) 范围内年份的闰日总数。 |
calendar.month(year,month,w=2,l=1) | 返回一个多行字符串,其中包含一年中的月份、一年中的月份、每周一行和两行标题行。w 是每个日期的字符宽度;每行的长度为 7*W+6。l 是每周的行数。 |
calendar.monthcalendar(year,month) | 返回 int 列表的列表。每个子列表表示一周。年月、月之外的天数设置为 0;月中的天数设置为其 day-of-month, 1 及以上。 |
calendar.monthrange(year,month) | 返回两个整数。第一个是 year 中 month、 月的第一天的工作日代码;第二个是当月的天数。工作日代码为 0(星期一)到 6(星期日);月份数字为 1 到 12。 |
calendar.prcal(year,w=2,l=1,c=6) | 就像打印 calendar.calendar(year,w,l,c)。 |
calendar.prmonth(year,month,w=2,l=1) | 就像打印 calendar.month(year,month,w,l)。 |
calendar.setfirstweekday(weekday) | 将每周的第一天设置为工作日代码 weekday。工作日代码为 0(星期一)到 6(星期日)。 |
calendar.timegm(tupletime) | 倒数 time.gmtime:接受时间元组形式的时间时刻,并返回与自纪元以来的浮点秒数相同的时刻。 |
calendar.weekday(year,month,day) | 返回给定日期的工作日代码。工作日代码为 0(星期一)到 6(星期日);月份数字为 1 (1 月) 到 12 月 (12 月)。 |
Python datetime 模块
Python 的 datetime 模块包含在标准库中。它由帮助操作数据和时间数据以及执行日期时间算术的类组成。
datetime 类的对象要么是 aware 的,要么是 naïve 的。如果对象包含时区信息,则它是 aware 的,如果不包含,则将其归类为 naïve。date 类的对象是 naive 的,而 time 和 datetime 对象是感知的。
Python date 对象
date 对象表示具有年、月和日的日期。当前的格里高利历在两个方向上无限期扩展。
语法
datetime.date(year, month, day)
参数必须是整数,范围如下 -
- year − 最小年份 <= 年份 <= 最大年份
- month − 1 <= 月 <= 12
- day − 1 <= 第 < 天 = 给定月份和年份的天数
如果给定了超出这些范围的任何参数的值,则会引发 ValueError 。
例
from datetime import date
date1 = date(2023, 4, 19)
print("Date:", date1)
date2 = date(2023, 4, 31)
它将产生以下输出 -
Traceback (most recent call last):
File "C:\Python311\hello.py", line 8, in <module>
date2 = date(2023, 4, 31)
ValueError: day is out of range for month
日期类属性
- date.min − 最早的可表示日期 date(MINYEAR, 1, 1)。
- date.max − 最新的可表示日期,日期(MAXYEAR, 12, 31)。
- date.resolution − 非相等日期对象之间可能的最小差值。
- date.year − 介于 MINYEAR 和 MAXYEAR 之间(含)。
- date.month - 介于 1 和 12 之间(包括 1 和 12)。
- date.day - 介于 1 和给定年份的给定月份的天数之间。
例
from datetime import date
# Getting min date
mindate = date.min
print("Minimum Date:", mindate)
# Getting max date
maxdate = date.max
print("Maximum Date:", maxdate)
Date1 = date(2023, 4, 20)
print("Year:", Date1.year)
print("Month:", Date1.month)
print("Day:", Date1.day)
它将产生以下输出 -
Maximum Date: 9999-12-31
Year: 2023
Month: 4
Day: 20
Date 类中的类方法
- today() − 返回当前本地日期。
- fromtimestamp(timestamp) − 返回与 POSIX 时间戳对应的本地日期,例如 time.time() 返回的日期。
- fromordinal(ordinal) − 返回与基本格里高利序数相对应的日期,其中第 1 年的 1 月 1 日具有序数 1。
- fromisoformat(date_string) − 返回与以任何有效的 ISO 8601 格式给出的date_string相对应的日期,序号日期除外
例
from datetime import date
print (date.today())
d1=date.fromisoformat('2023-04-20')
print (d1)
d2=date.fromisoformat('20230420')
print (d2)
d3=date.fromisoformat('2023-W16-4')
print (d3)
它将产生以下输出 -
2023-04-20
2023-04-20
2023-04-20
Date 类中的实例方法
- replace() − 通过指定关键字参数,将指定的属性替换为新值来返回日期。
- timetuple() − 返回一个time.struct_time,例如 time.localtime() 返回的。
- toordinal() − 返回日期的公历序数,其中 1 年的 1 月 1 日的序数为 1。对于任何日期对象 d,date.fromordinal(d.toordinal()) == d。
- weekday() − 以整数形式返回星期几,其中 Monday 为 0,Sunday 为 6。
- isoweekday() − 以整数形式返回星期几,其中 Monday 为 1,Sunday 为 7。
- isocalendar() − 返回一个命名元组对象,其中包含三个组成部分:year、week 和 weekday。
- isoformat() − 返回一个字符串,表示 ISO 8601 格式的日期 YYYY-MM-DD:
- __str__() − 对于日期 d,str(d) 等价于 d.isoformat()
- ctime() − 返回表示日期的字符串:
- strftime(format) − 返回表示日期的字符串,由显式格式字符串控制。
- __format__(format) − 与 date.strftime() 相同。
例
from datetime import date
d = date.fromordinal(738630) # 738630th day after 1. 1. 0001
print (d)
print (d.timetuple())
# Methods related to formatting string output
print (d.isoformat())
print (d.strftime("%d/%m/%y"))
print (d.strftime("%A %d. %B %Y"))
print (d.ctime())
print ('The {1} is {0:%d}, the {2} is {0:%B}.'.format(d, "day", "month"))
# Methods for to extracting 'components' under different calendars
t = d.timetuple()
for i in t:
print(i)
ic = d.isocalendar()
for i in ic:
print(i)
# A date object is immutable; all operations produce a new object
print (d.replace(month=5))
它将产生以下输出 -
time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=110, tm_isdst=-1)
2023-04-20
20/04/23
Thursday 20. April 2023
Thu Apr 20 00:00:00 2023
The day is 20, the month is April.
2023
4
20
0
0
0
3
110
-1
2023
16
4
2023-05-20
Python time 模块
对象时间类表示一天中的本地时间。它与任何特定日期无关。如果该对象包含 tzinfo 详细信息,则它是 aware 对象。如果它是 None,则 time 对象是 naïve 对象。
语法
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
所有参数都是可选的。tzinfo 可以是 None 或 tzinfo 子类的实例。其余参数必须是以下范围内的整数 -
- hour − 0 <= 小时 < 24,
- minute − 0 <= 分钟 < 60,
- second − 0 <= 秒 < 60,
- microsecond − 0 <= 微秒 < 1000000
如果给出任何参数超出这些范围,则会引发 ValueError 。
例
from datetime import time
time1 = time(8, 14, 36)
print("Time:", time1)
time2 = time(minute = 12)
print("time", time2)
time3 = time()
print("time", time3)
time4 = time(hour = 26)
它将产生以下输出 -
time 00:12:00
time 00:00:00
Traceback (most recent call last):
File "/home/cg/root/64b912f27faef/main.py", line 12, in
time4 = time(hour = 26)
ValueError: hour must be in 0..23
类属性
- time.min − 最早的可表示时间 time(0, 0, 0, 0)。
- time.max − 最晚的可表示时间,时间(23, 59, 59, 999999)。
- time.resolution − 不相等时间对象之间可能的最小差值。
例
from datetime import time
print(time.min)
print(time.max)
print (time.resolution)
它将产生以下输出 -
23:59:59.999999
0:00:00.000001
实例属性
- time.hour − 范围 (24)
- time.minute − 范围内 (60)
- time.second − 范围 (60)
- time.microsecond − 范围内 (1000000)
- time.tzinfo - 时间构造函数的 tzinfo 参数,或 None。
例
from datetime import time
t = time(8,23,45,5000)
print(t.hour)
print(t.minute)
print (t.second)
print (t.microsecond)
它将产生以下输出 -
23
455000
time Object 的实例方法
- replace() − 返回具有相同值的时间,但由指定的关键字参数赋予新值的属性除外。
- isoformat() − 返回一个字符串,以 ISO 8601 格式表示时间
- __str__() − 对于时间 t,str(t) 等价于 t.isoformat()。
- strftime(format) - 返回表示时间的字符串,由显式格式字符串控制。
- __format__(format) − 与 time.strftime() 相同。
- utcoffset() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.utcoffset(None),
- dst() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.dst(None),
- tzname() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.tzname(None) 或引发异常
Python datetime 对象
datetime 类的对象同时包含日期和时间的信息。它假设当前的格里高利历在两个方向上扩展;就像一个时间对象,每天正好有 3600*24 秒。
语法
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
year、month 和 day 参数是必需的。
- year − 最小年份 <= 年份 <= MAXYEAR,
- month − 1 <= 月 <= 12,
- day − 1 <= 第 < 天 = 给定月份和年份的天数,
- hour − 0 <= 小时 < 24,
- minute − 0 <= 分钟 < 60,
- second −0 <= 秒 < 60,
- microsecond − 0 <= 微秒 < 1000000,
- fold − in [0, 1] 中。
如果给出了任何超出范围的参数,则会引发 ValueError 。
例
from datetime import datetime
dt = datetime(2023, 4, 20)
print(dt)
dt = datetime(2023, 4, 20, 11, 6, 32, 5000)
print(dt)
它将产生以下输出 -
2023-04-20 11:06:32.005000
类属性
- datetime.min - 最早可表示的日期时间 datetime(MINYEAR, 1, 1, tzinfo=None)。
- datetime.max − 最新可表示的日期时间 datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)。
- datetime.resolution − 不相等的日期时间对象之间可能的最小差值 timedelta(microseconds=1)。
例
from datetime import datetime
min = datetime.min
print("Min DateTime ", min)
max = datetime.max
print("Max DateTime ", max)
它将产生以下输出 -
Max DateTime 9999-12-31 23:59:59.999999
datetime 对象的实例属性
- datetime.year − 介于 MINYEAR 和 MAXYEAR 之间(含)。
- datetime.month - 介于 1 和 12 之间(包括 1 和 12)。
- datetime.day - 介于 1 和给定年份的给定月份的天数之间。
- datetime.hour − 范围 (24)
- datetime.minute − 范围内 (60)
- datetime.second − 在范围内 (60)
- datetime.microsecond − 在 范围内 (1000000)。
- datetime.tzinfo − 作为 tzinfo 参数传递给 datetime 构造函数的对象,如果未传递任何参数,则为 None。
- datetime.fold − 在 [0, 1] 中。用于消除重复间隔期间的 wall 时间的歧义。
例
from datetime import datetime
dt = datetime.now()
print("Day: ", dt.day)
print("Month: ", dt.month)
print("Year: ", dt.year)
print("Hour: ", dt.hour)
print("Minute: ", dt.minute)
print("Second: ", dt.second)
它将产生以下输出 -
Month: 4
Year: 2023
Hour: 15
Minute: 5
Second: 52
datetime Object 的类方法
- today() − 返回当前本地日期时间,其中 tzinfo None。
- now(tz=None) − 返回当前本地日期和时间。
- utcnow() − 返回当前 UTC 日期和时间,其中 tzinfo 为 None。
- utcfromtimestamp(timestamp) − 返回与 POSIX 时间戳对应的 UTC 日期时间,其中 tzinfo None
- fromtimestamp(timestamp, timezone.utc) − 在符合 POSIX 的平台上,它相当于 todatetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=timestamp)
- fromordinal(ordinal) − 返回与基本格里高利序数相对应的日期时间,其中第 1 年的 1 月 1 日的序数为 1。
- fromisoformat(date_string) − 返回与任何有效 ISO 8601 格式的date_string对应的日期时间。
datetime Object 的实例方法
- date() − 返回具有相同年、月和日的日期对象。
- time() − 返回具有相同小时、分钟、秒、微秒和折叠的时间对象。
- timetz() − 返回具有相同小时、分钟、秒、微秒、fold 和 tzinfo 属性的时间对象。另请参见方法 time()。
- replace() − 返回具有相同属性的日期时间,但由指定的任何关键字参数赋予新值的属性除外。
- astimezone(tz=None) − 返回具有新 tzinfo 属性 tz 的 datetime 对象
- utcoffset() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.utcoffset(self)
- dst() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.dst(self)
- tzname() − 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.tzname(self)
- timetuple() − 返回一个time.struct_time,例如 time.localtime() 返回的。
- atetime.toordinal() − 返回日期的 proleptic Gregorian 序数。
- timestamp() − 返回与 datetime 实例对应的 POSIX 时间戳。
- isoweekday() − 以整数形式返回星期几,其中 Monday 为 1,Sunday 为 7。
- isocalendar() − 返回一个命名元组,其中包含三个组成部分:year、week 和 weekday。
- isoformat(sep='T', timespec='auto') − 返回一个字符串,表示 ISO 8601 格式的日期和时间
- __str__() − 对于日期时间实例 d,str(d) 等效于 d.isoformat(' ')。
- ctime() − 返回表示日期和时间的字符串:
- strftime(format) - 返回表示日期和时间的字符串,由显式格式字符串控制。
- __format__(format) − 与 strftime() 相同。
例
from datetime import datetime, date, time, timezone
# Using datetime.combine()
d = date(2022, 4, 20)
t = time(12, 30)
datetime.combine(d, t)
# Using datetime.now()
d = datetime.now()
print (d)
# Using datetime.strptime()
dt = datetime.strptime("23/04/20 16:30", "%d/%m/%y %H:%M")
# Using datetime.timetuple() to get tuple of all attributes
tt = dt.timetuple()
for it in tt:
print(it)
# Date in ISO format
ic = dt.isocalendar()
for it in ic:
print(it)
它将产生以下输出 -
2020
4
23
16
30
0
3
114
-1
2020
17
4
Python timedelta 对象
timedelta 对象表示两个日期或两个 time 对象之间的持续时间。
语法
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
在内部,这些属性以天、秒和微秒为单位存储。其他参数将转换为这些单位 -
- 一毫秒转换为 1000 微秒。
- 一分钟转换为 60 秒。
- 一小时转换为 3600 秒。
- 一周转换为 7 天。
然后对 days、seconds 和 microseconds 进行规范化,以便表示是唯一的。
例以下示例显示 Python 在内部仅存储天数、秒数和微秒。
from datetime import timedelta
delta = timedelta(
days=100,
seconds=27,
microseconds=10,
milliseconds=29000,
minutes=5,
hours=12,
weeks=2
)
# Only days, seconds, and microseconds remain
print (delta)
它将产生以下输出 -
例
以下示例演示如何将 timedelta 对象添加到 datetime 对象。
from datetime import datetime, timedelta
date1 = datetime.now()
date2= date1+timedelta(days = 4)
print("Date after 4 days:", date2)
date3 = date1-timedelta(15)
print("Date before 15 days:", date3)
它将产生以下输出 -
Date before 15 days: 2023-04-05 18:05:39.509905
timedelta 对象的类属性
- timedelta.min − 最负的 timedelta 对象 timedelta(-999999999)。
- timedelta.max − 最正的 timedelta 对象 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)。
- timedelta.resolution − 不相等的 timedelta 对象之间可能的最小差值 timedelta(microseconds=1)
例
from datetime import timedelta
# Getting minimum value
min = timedelta.min
print("Minimum value:", min)
max = timedelta.max
print("Maximum value", max)
它将产生以下输出 -
Maximum value 999999999 days, 23:59:59.999999
timedelta 对象的实例属性
由于内部仅存储 day、second 和 microseconds,因此这些是 timedelta 对象的唯一实例属性。
- day - 介于 -999999999 和 999999999 之间
- second - 介于 0 和 86399 之间(包括 0 和 86399)
- microseconds - 介于 0 和 999999 之间(包括 0 和 之间)
timedelta 对象的实例方法
- timedelta.total_seconds() − 返回持续时间中包含的总秒数。
例
from datetime import timedelta
year = timedelta(days=365)
years = 5 * year
print (years)
print (years.days // 365)
646
year_1 = years // 5
print(year_1.days)
它将产生以下输出 -
5
365