假设我有这个时间戳:
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()
。但这看起来确实很啰嗦。有没有更Pythonic的方式?
最佳答案
只需将小时
和分钟
属性相乘,除以微秒
属性并将其全部相加即可:
>>> (t.hour * 3600) + (t.minute * 60) + t.second + (t.microsecond / 1000000.0)
39725.110521
不幸的是,您不能使用datetime.time.min
,因为datetime.time
对象不支持减法。
您可以通过将时间与datetime.date.min
(最早支持的日期)相结合来生成datetime.datetime
对象,然后减去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.110521
关于python - 如何将时间戳转换为午夜以来的秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684369/