如何将datetime.date对象转换为time.struct_time对象?
我有一个Python脚本,需要比较两个日期。我有一个日期列表,这些日期是time.struct_time对象,我需要把它们和一些datetime.date对象进行比较。
我该怎么把datetime.date对象转换成time.struct_time对象呢?或者我可以直接用datetime.date对象进行比较吗?
4 个回答
请查看这个 time Python模块 的文档,它说明你可以使用 calendar.timegm 或者 time.mktime 来把 time.struct_time 对象转换成自1970年1月1日以来的秒数(你用哪个函数取决于你的struct_time是处于某个时区还是UTC时间)。然后你可以在另一个对象上使用 datetime.datetime.time,并比较自1970年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/
可以试试使用 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日开始算起。