如何将datetime.date对象转换为time.struct_time对象?

14 投票
4 回答
14191 浏览
提问于 2025-04-16 15:42

我有一个Python脚本,需要比较两个日期。我有一个日期列表,这些日期是time.struct_time对象,我需要把它们和一些datetime.date对象进行比较。

我该怎么把datetime.date对象转换成time.struct_time对象呢?或者我可以直接用datetime.date对象进行比较吗?

4 个回答

0

请查看这个 time Python模块 的文档,它说明你可以使用 calendar.timegm 或者 time.mktime 来把 time.struct_time 对象转换成自1970年1月1日以来的秒数(你用哪个函数取决于你的struct_time是处于某个时区还是UTC时间)。然后你可以在另一个对象上使用 datetime.datetime.time,并比较自1970年1月1日以来的秒数。

1

下面是一个将日期对象转换为时间结构体对象的例子:

#### Import the necessary modules
>>> dt = date(2008, 11, 10)
>>> time_tuple = dt.timetuple()
>>> print repr(time_tuple)
'time.struct_time(tm_year=2008, tm_mon=11, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0,     
 tm_wday=0, tm_yday=315, tm_isdst=-1)'

想要查看更多例子,可以参考这个链接: http://www.saltycrane.com/blog/2008/11/python-datetime-time-conversions/

20

可以试试使用 date.timetuple()。根据Python的文档:

这个方法会返回一个 time.struct_time,它的格式和 time.localtime() 返回的结果类似。这里的小时、分钟和秒都是0,夏令时标志是-1。d.timetuple() 的效果就相当于 time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1)),其中 yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1 表示当前年份中的天数,从1月1日开始算起。

撰写回答