假设我有这个时间戳:
In [146]: t
Out[146]: datetime.time(11, 2, 5, 110521)如何将此转换为自午夜以来的秒数?一种方法是首先将其转换为timedelta
In [147]: datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond)
Out[147]: datetime.timedelta(0, 39725, 110521)然后我就可以拿total_seconds()了。但这听起来真的很长。还有更多的毕达通方式吗?
发布于 2014-02-10 17:51:25
只需将hour和minute属性相乘,将microsecond属性除以,并将它们全部相加:
>>> (t.hour * 3600) + (t.minute * 60) + t.second + (t.microsecond / 1000000.0)
39725.110521您不能使用datetime.time.min,因为不幸的是,datetime.time对象不支持减法。
您可以通过组合time + datetime.date.min (最早支持的日期),然后减去datetime.datetime.min (最早支持的日期和时间)来生成一个datetime.datetime.min对象,但这也是冗长的:
>>> datetime.datetime.combine(datetime.date.min, t) - datetime.datetime.min
datetime.timedelta(0, 39725, 110521)
>>> (datetime.datetime.combine(datetime.date.min, t) - datetime.datetime.min).total_seconds
39725.110521https://stackoverflow.com/questions/21684369
复制相似问题