主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
Python

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 元组
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 复制数组
Python 反转数组
Python 排序数组
Python 合并数组
Python 数组方法
Python 数组练习

Python 文件处理

Python 文件处理
Python 文件写入
Python 文件读取
Python 重命名和删除文件
Python 目录
Python 文件方法
Python 文件/目录方法
Python OS.Path 方法

Python 面向对象编程

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 Date and Time
Python math模块
Python 迭代器
Python 生成器
Python 闭包
Python 装饰器
Python 递归
Python 正则表达式
Python Pip
Python 数据库访问
Python 弱引用
Python 序列化
Python 模板技术
Python 输出格式化
Python 性能测量
Python 数据压缩
Python 通用网关接口
Python XML 处理
Python 用户界面(GUI)
Python 命令行参数
Python Docstrings
Python JSON
Python 发送电子邮件
Python 进一步扩展
Python 工具/实用程序
Python GUI

Python 高级概念

Python 抽象基类
Python 自定义异常
Python 高阶函数
Python 对象的内部机制
Python 内存管理
Python 元类
Python 元编程
Python 模拟与桩
Python 猴子补丁
Python 信号处理
Python 类型提示
Python 进行自动化
Python Humanize包
Python 上下文管理器
Python 协程
Python 描述符
Python 内存泄漏
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 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 循环元组
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 文件写入
Python 文件读取
Python 重命名和删除文件
Python 目录
Python 文件方法
Python 文件/目录方法
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 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 URL 处理
Python 泛型

杂项

Python Date and Time
Python math模块
Python 迭代器
Python 生成器
Python 闭包
Python 装饰器
Python 递归
Python 正则表达式
Python Pip
Python 数据库访问
Python 弱引用
Python 序列化
Python 模板技术
Python 输出格式化
Python 性能测量
Python 数据压缩
Python 通用网关接口
Python XML 处理
Python 用户界面(GUI)
Python 命令行参数
Python Docstrings
Python JSON
Python 发送电子邮件
Python 进一步扩展
Python 工具/实用程序
Python GUI

高级概念

Python 抽象基类
Python 自定义异常
Python 高阶函数
Python 对象的内部机制
Python 内存管理
Python 元类
Python 元编程
Python 模拟与桩
Python 猴子补丁
Python 信号处理
Python 类型提示
Python 进行自动化
Python Humanize包
Python 上下文管理器
Python 协程
Python 描述符
Python 内存泄漏
Python 不可变数据结构

Python Date and Time


上一章 下一章

Python 可以用多种方式处理日期和时间。在计算机中转换日期格式是一项常见的任务。Python 标准库中有几个模块用于处理与日期和时间相关的处理:

  • datetime 模块
  • time 模块
  • calendar 模块

时间戳(Tick Intervals)

时间间隔是以秒为单位的浮点数。特定的时间瞬间可以用自 1970 年 1 月 1 日午夜以来的秒数来表达(纪元时间)。

Python 中有一个流行的时间模块 time,提供了用于处理时间和在不同表示之间转换的函数。函数 time.time() 返回自 1970 年 1 月 1 日午夜以来的当前系统时间(以秒为单位)。

示例

import time # 这里需要导入 time 模块。
ticks = time.time()
print ("自 1970 年 1 月 1 日午夜以来的秒数:", ticks)

这将产生类似以下的结果:

自 1970 年 1 月 1 日午夜以来的秒数: 1681928297.5316436

日期算术使用时间戳很容易实现。但是,纪元之前的日期无法以这种方式表示。远未来的日期也无法这样表示——UNIX 和 Windows 的截止点是在 2038 年左右。

TimeTuple 是什么?

Python 的许多时间函数将时间处理为一个包含 9 个数字的元组,如下所示:

索引 字段 值
0 4位年份 2016
1 月份 1 到 12
2 天 1 到 31
3 小时 0 到 23
4 分钟 0 到 59
5 秒 0 到 61 (60 或 61 是闰秒)
6 星期几 0 到 6 (0 表示星期一)
7 一年中的第几天 1 到 366 (儒略日)
8 夏令时 -1, 0, 1, -1 表示库确定夏令时

例如,

>>> import time
>>> print (time.localtime())

这将产生如下输出:

time.struct_time(tm_year=2023, tm_mon=4, tm_mday=19, tm_hour=23, tm_min=49, tm_sec=8, tm_wday=2, tm_yday=109, tm_isdst=0)

上面的元组等同于 struct_time 结构。此结构具有以下属性:

索引 属性 值
0 tm_year 2016
1 tm_mon 1 到 12
2 tm_mday 1 到 31
3 tm_hour 0 到 23
4 tm_min 0 到 59
5 tm_sec 0 到 61 (60 或 61 是闰秒)
6 tm_wday 0 到 6 (0 表示星期一)
7 tm_yday 1 到 366 (儒略日)
8 tm_isdst -1, 0, 1, -1 表示库确定夏令时

获取当前时间

要将某一时间点从纪元以来的秒数浮点值转换为时间元组,可以将该浮点值传递给返回包含所有有效九项的时间元组的函数(例如,localtime)。

import time
localtime = time.localtime(time.time())
print ("本地当前时间 :", localtime)

这将产生以下结果,可以以其他任何形式展示:

本地当前时间 : time.struct_time(tm_year=2023, tm_mon=4, tm_mday=19, tm_hour=23, tm_min=42, tm_sec=41, tm_wday=2, tm_yday=109, tm_isdst=0)

获取格式化的时间

您可以根据需求格式化任何时间,但获取易于阅读的时间格式的一个简单方法是使用 asctime() 方法。

import time

localtime = time.asctime( time.localtime(time.time()) )
print ("本地当前时间 :", localtime)

这将产生以下输出:

本地当前时间 : Wed Apr 19 23:45:27 2023

获取某个月的日历

calendar 模块提供了多种方法来处理年份和月份的日历。这里我们打印出给定月份(2023年4月)的日历。

import calendar
cal = calendar.month(2023, 4)
print ("这是日历:")
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,提供了用于处理时间和在不同表示之间转换的函数。以下列出了所有可用的方法:

序号 函数与描述
1 time.altzone
2 time.asctime([tupletime])
3 time.clock()
4 time.ctime([secs])
5 time.gmtime([secs])
6 time.localtime([secs])
7 time.mktime(tupletime)
8 time.sleep(secs)
9 time.strftime(fmt[,tupletime])
10 time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
11 time.time()
12 time.tzset()

让我们简要地了解一下这些函数。

time 模块中有两个重要的属性:

序号 属性与描述
1 time.timezone
2 time.tzname

calendar 模块

calendar 模块提供了与日历相关的函数,包括打印给定月份或年份的文本日历的功能。

默认情况下,calendar 将星期一作为一周的第一天,星期日作为最后一天。要更改这一点,请调用 calendar.setfirstweekday() 函数。

以下是 calendar 模块提供的函数列表:

序号 函数与描述
1 calendar.calendar(year,w=2,l=1,c=6)
2 calendar.firstweekday()
3 calendar.isleap(year)
4 calendar.leapdays(y1,y2)
5 calendar.month(year,month,w=2,l=1)
6 calendar.monthcalendar(year,month)
7 calendar.monthrange(year,month)
8 calendar.prcal(year,w=2,l=1,c=6)
9 calendar.prmonth(year,month,w=2,l=1)
10 calendar.setfirstweekday(weekday)
11 calendar.timegm(tupletime)
12 calendar.weekday(year,month,day)

datetime 模块

Python 的 datetime 模块包含在标准库中。它由帮助操作日期和时间数据以及执行日期时间算术的类组成。

datetime 类的对象要么是 “aware” 要么是 “naive”。如果对象包含时区信息,则为 “aware”,否则分类为 “naive”。date 类的对象是 “naive”,而 time 和 datetime 对象则是 “aware”。

Python date 对象

date 对象代表一个由年、月和日组成的日期。当前的格里高利历在两个方向上无限延伸。

语法

datetime.date(year, month, day)

参数必须是整数,在以下范围内:

  • year: MINYEAR <= year <= MAXYEAR
  • month: 1 <= month <= 12
  • day: 1 <= day <= 给定月份和年份中的天数

如果提供的任何参数超出上述范围,则会引发 ValueError。

Python 中的日期类 (date) 和时间类 (time) 示例

日期类 (date) 示例

示例

from datetime import date
date1 = date(2023, 4, 19)
print("Date:", date1)
date2 = date(2023, 4, 31)

它将产生以下输出:

Date: 2023-04-19
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) 的属性

  • date.min — 最早可表示的日期,date(MINYEAR, 1, 1)。
  • date.max — 最晚可表示的日期,date(MAXYEAR, 12, 31)。
  • date.resolution — 非等日期对象之间的最小可能差异。
  • date.year — 在 MINYEAR 和 MAXYEAR 之间(包括边界)。
  • date.month — 在 1 和 12 之间(包括边界)。
  • date.day — 在 1 和给定年份中的给定月份的天数之间。

示例

from datetime import date

# 获取最小日期
mindate = date.min
print("Minimum Date:", mindate)

# 获取最大日期
maxdate = date.max
print("Maximum Date:", maxdate)

Date1 = date(2023, 4, 20)
print("Year:", Date1.year)
print("Month:", Date1.month)
print("Day:", Date1.day)

它将产生以下输出:

Minimum Date: 0001-01-01
Maximum Date: 9999-12-31
Year: 2023
Month: 4
Day: 20

日期类 (date) 中的类方法

  • today() — 返回当前本地日期。
  • fromtimestamp(timestamp) — 返回对应于 time.time() 返回的 POSIX 时间戳的本地日期。
  • 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
2023-04-20

日期类 (date) 中的实例方法

  • replace() — 通过指定关键字参数的新值返回一个日期。
  • timetuple() — 返回一个 time.struct_time,如 time.localtime() 返回的。
  • toordinal() — 返回日期的前格里高利序数,其中公元1年的1月1日有序数1。对于任何日期对象 d,date.fromordinal(d.toordinal()) == d。
  • weekday() — 返回一周中的天数作为一个整数,其中星期一是0,星期日是6。
  • isoweekday() — 返回一周中的天数作为一个整数,其中星期一是1,星期日是7。
  • isocalendar() — 返回一个包含三个组件的命名元组对象:年、周和周内的一天。
  • isoformat() — 返回一个表示日期的字符串,格式为 YYYY-MM-DD。
  • __str__() — 对于一个日期 d,str(d) 等价于 d.isoformat()。
  • ctime() — 返回一个表示日期的字符串。
  • strftime(format) — 返回一个由显式格式字符串控制的表示日期的字符串。
  • __format__(format) — 同 date.strftime()。

示例

from datetime import date
d = date.fromordinal(738630) # 第738630天之后的1. 1. 0001
print(d)
print(d.timetuple())
# 与格式化字符串输出相关的方法
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"))

# 用于提取不同日历下的'组件'
t = d.timetuple()
for i in t:
   print(i)
   
ic = d.isocalendar()
for i in ic:
   print(i)
   
# 日期对象是不可变的;所有操作都会产生一个新的对象
print(d.replace(month=5))

它将产生以下输出:

2023-04-20
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 模块

time 类的对象代表一天中的本地时间。它独立于任何特定的一天。如果对象包含 tzinfo 详情,则它是 aware 对象。如果 tzinfo 是 None,则 time 对象是 naive 对象。

语法

datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

所有参数都是可选的。tzinfo 可能是 None,或者是一个 tzinfo 子类的实例。其余参数必须是在以下范围内的整数:

  • hour — 0 <= hour < 24
  • minute — 0 <= minute < 60
  • second — 0 <= second < 60
  • microsecond — 0 <= microsecond < 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: 08:14:36
time 00:12:00
time 00:00:00
Traceback (most recent call last):
  File "/home/cg/root/64b912f27faef/main.py", line 12, in <module>
    time4 = time(hour = 26)
ValueError: hour must be in 0..23

time 类的类属性

  • time.min — 最早可表示的时间,time(0, 0, 0, 0)。
  • time.max — 最晚可表示的时间,time(23, 59, 59, 999999)。
  • time.resolution — 非等时间对象之间的最小可能差异。

示例

from datetime import time
print(time.min)
print(time.max)
print(time.resolution)

它将产生以下输出:

00:00:00
23:59:59.999999
0:00:00.000001

time 类的实例属性

  • time.hour — 在 range(24) 内。
  • time.minute — 在 range(60) 内。
  • time.second — 在 range(60) 内。
  • time.microsecond — 在 range(1000000) 内。
  • time.tzinfo — 构造 time 对象时的 tzinfo 参数,或者 None。

示例

from datetime import time
t = time(8,23,45,5000)
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)

它将产生以下输出:

8
23
455000

Python 中的日期类 (date) 和时间类 (time) 示例

时间类 (time) 的实例方法

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 类的对象包含了日期和时间的信息。它假定了当前的格里高利历向两个方向延伸;像 time 对象一样,在每一天中正好有 3600*24 秒。

语法

datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

year, month 和 day 参数是必需的。

  • year — MINYEAR <= year <= MAXYEAR
  • month — 1 <= month <= 12
  • day — 1 <= day <= 给定月份和年份中的天数
  • hour — 0 <= hour < 24
  • minute — 0 <= minute < 60
  • second — 0 <= second < 60
  • microsecond — 0 <= microsecond < 1000000
  • fold — 在 [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 00:00:00
2023-04-20 11:06:32.005000

datetime 类的类属性

  • datetime.min — 最早可表示的 datetime,datetime(MINYEAR, 1, 1, tzinfo=None)。
  • datetime.max — 最晚可表示的 datetime,datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)。
  • datetime.resolution — 非等 datetime 对象之间的最小可能差异,timedelta(microseconds=1)。

示例

from datetime import datetime
min = datetime.min
print("Min DateTime ", min)

max = datetime.max
print("Max DateTime ", max)

它将产生以下输出:

Min DateTime 0001-01-01 00:00:00
Max DateTime 9999-12-31 23:59:59.999999

datetime 对象的实例属性

  • datetime.year — 在 MINYEAR 和 MAXYEAR 之间(包括边界)。
  • datetime.month — 在 1 和 12 之间(包括边界)。
  • datetime.day — 在 1 和给定年份中的给定月份的天数之间。
  • datetime.hour — 在 range(24) 内。
  • datetime.minute — 在 range(60) 内。
  • datetime.second — 在 range(60) 内。
  • datetime.microsecond — 在 range(1000000) 内。
  • datetime.tzinfo — 作为 datetime 构造函数的 tzinfo 参数传递的对象,或者如果没有传递则为 None。
  • datetime.fold — 在 [0, 1] 范围内。用于在重复区间内消除壁钟时间的歧义。

示例

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)

它将产生以下输出:

Day: 20
Month: 4
Year: 2023
Hour: 15
Minute: 5
Second: 52

datetime 对象的类方法

  • today() — 返回当前本地日期时间,tzinfo 为 None。
  • now(tz=None) — 返回当前本地日期和时间。
  • utcnow() — 返回当前的 UTC 日期和时间,tzinfo 为 None。
  • utcfromtimestamp(timestamp) — 返回对应于 POSIX 时间戳的 UTC 日期时间,tzinfo 为 None。
  • fromtimestamp(timestamp, timezone.utc) — 在符合 POSIX 规范的平台上,这等同于 datetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=timestamp)。
  • fromordinal(ordinal) — 返回对应于前格里高利序数的日期时间,其中公元1年的1月1日有序数1。
  • fromisoformat(date_string) — 返回对应于以任何有效的 ISO 8601 格式给出的 date_string 的日期时间。

datetime 对象的实例方法

  • date() — 返回具有相同年、月和日的日期对象。
  • time() — 返回具有相同小时、分钟、秒、微秒和折叠状态的 time 对象。
  • timetz() — 返回具有相同小时、分钟、秒、微秒、折叠状态和 tzinfo 属性的 time 对象。参见 time() 方法。
  • replace() — 返回具有相同属性的 datetime,除非那些由指定的关键字参数赋予新值的属性。
  • 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() 返回的。
  • datetime.toordinal() — 返回日期的前格里高利序数。
  • timestamp() — 返回对应于 datetime 实例的 POSIX 时间戳。
  • isoweekday() — 返回一周中的天数作为一个整数,其中星期一是 1,星期日是 7。
  • isocalendar() — 返回一个包含三个组件的命名元组对象:年、周和周内的一天。
  • isoformat(sep='T', timespec='auto') — 返回一个表示日期和时间的字符串,格式为 ISO 8601。
  • __str__() — 对于一个 datetime 实例 d,str(d) 等同于 d.isoformat(' ')。
  • ctime() — 返回一个表示日期和时间的字符串。
  • strftime(format) — 返回一个表示日期和时间的字符串,受显式格式字符串的控制。
  • __format__(format) — 同 strftime()。

示例

from datetime import datetime, date, time, timezone

# 使用 `datetime.combine()`
d = date(2022, 4, 20)
t = time(12, 30)
datetime.combine(d, t)

# 使用 `datetime.now()`
d = datetime.now()
print(d)

# 使用 `datetime.strptime()`
dt = datetime.strptime("23/04/20 16:30", "%d/%m/%y %H:%M")

# 使用 `datetime.timetuple()` 获取所有属性的元组
tt = dt.timetuple()
for it in tt:
   print(it)

# 日期的 ISO 格式
ic = dt.isocalendar()
for it in ic:
   print(it)

它将产生以下输出:

2023-04-20 15:12:49.816343
2020
4
23
16
30
0
3
114
-1
2020
17
4

Python timedelta 对象

timedelta 对象表示两个日期或两个时间对象之间的持续时间。

语法

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

内部存储的属性为天数、秒和微秒。其他参数转换为这些单位:

  • 毫秒转换为 1000 微秒。
  • 分钟转换为 60 秒。
  • 小时转换为 3600 秒。
  • 周转换为 7 天。

天数、秒和微秒随后被规范化,以便表示唯一。

示例

下面的例子展示了 Python 内部只存储天数、秒和微秒。

from datetime import timedelta
delta = timedelta(
   days=100,
   seconds=27,
   microseconds=10,
   milliseconds=29000,
   minutes=5,
   hours=12,
   weeks=2
)
# 只剩下天数、秒和微秒
print(delta)

它将产生以下输出:

114 days, 12:05:56.000010

示例

下面的例子展示了如何将 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 after 4 days: 2023-04-24 18:05:39.509905
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

# 获取最小值
min = timedelta.min
print("Minimum value:", min)

max = timedelta.max
print("Maximum value", max)

它将产生以下输出:

Minimum value: -999999999 days, 0:00:00
Maximum value 999999999 days, 23:59:59.999999

timedelta 对象的实例属性

由于内部只存储了天数、秒和微秒,因此这些是 timedelta 对象的唯一实例属性。

  • days — 在 -999999999 和 999999999 之间(包括边界)。
  • seconds — 在 0 和 86399 之间(包括边界)。
  • microseconds — 在 0 和 999999 之间(包括边界)。

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)

它将产生以下输出:

1825 days, 0:00:00
5
365
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图