Python datetime.datetime.timetuple()方法

datetime 库是一个内置的 Python 库,它提供了许多实用工具,如类、方法和属性,用于处理日期、时间、日期和时间的结合(DateTime)、时区和 timedelta(时差)。

这个库有一个类,即datetime ,它简化了处理日期和时间的过程。这个类有多个类函数,允许程序员在字符串格式(如ISO、时间戳和序号)的帮助下制作datetime 对象。

每个datetime 对象都有几个实例方法,如date(),time(),timetz(), 等等。其中一个方法是timetuple() 方法。

timetuple() 方法返回一个命名元组的对象time.struct_timestruct_timedatetime 模块中的又一个对象。

在这篇文章中,我们将通过一些相关的例子来详细介绍这个方法和这个对象。

语法

<datetime-object>.timetuple()

参数

timetuple() 方法不接受任何参数。

返回值

timetuple() 方法返回一个命名元组的对象time.struct_time 。由于它是一个命名元组的对象,它的值可以用索引和属性名称来访问。

它有以下属性。

索引 属性 数值
0 tm_year 任何有效的数字年份
1 tm_mon [1, 12]
2 tm_mday [1, 31]
3 tm_hour [0, 23]
4 tm_min [0, 59]
5 tm_sec [0, 59]
6 tm_wday [0, 6],其中0 是指星期一
7 tm_yday [1, 366]
8 tm_isdst 0,1, 或-1
tm_zone 时区名称的缩略语
tm_gmtoff UTC以东的偏移量(秒)。

time.struct_time 对象由gmtime(),localtime(), 和strptime() 等方法返回。年月日或yday ,用以下指令计算。

yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1

根据timezone 对象上可用的dst() 方法,设置输出的tm_isdst 布尔标志。每个子类抽象的tzinfo 类都必须实现这个方法。

要了解关于dst() 方法的更多信息,以及如何确定其值,请参考这里的官方 Python 文档。

要了解命名元组time.struct_time ,请参考这里的官方 Python 文档。

示例代码:在Python中使用datetime.datetime.timetuple() 方法

import datetime
cet = datetime.timezone(datetime.timedelta(hours = 2), name = "CET")
dt = datetime.datetime(2022, 3, 25, 12, 33, 45, 234154, cet)
tt = dt.timetuple()
print("DateTime:", dt)
print(tt)
print("Year:", tt[0])
print("Month:", tt[1])
print("Day:", tt[2])
print("Hour:", tt.tm_hour)
print("Minutes:", tt.tm_min)
print("Seconds:", tt.tm_sec)

输出:

DateTime: 2022-03-25 12:33:45.234154+02:00
time.struct_time(
    tm_year=2022,
    tm_mon=3,
    tm_mday=25,
    tm_hour=12,
    tm_min=33,
    tm_sec=45,
    tm_wday=4,
    tm_yday=84,
    tm_isdst=-1
)
Year: 2022
Month: 3
Day: 25
Hour: 12
Minutes: 33
Seconds: 45
  1. 上面的Python代码首先创建了一个时区感知的datetime 对象,时区设置为CET或中欧时间。
  2. 接下来,它使用timetuple() 实例方法创建一个time.struct_time 对象并打印出来。
  3. 此外,各种属性,如年、月、小时和秒,都使用索引和属性名称进行访问。

注意,如果使用无效的索引和错误的属性名访问属性,Python解释器会分别引发一个IndexError 和一个AttributeError 异常。