python - 如何将时间戳转换为午夜以来的秒数?

标签 python datetime time python-datetime

假设我有这个时间戳:

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/

相关文章:

Python 套接字编程 - 错误的文件描述符错误

python - 逻辑回归: objects are not aligned

java - 如何使用 JodaTime 保留原始时区

postgresql - PostgresQL - 循环遍历每日 Select 语句以进行月末报告

php - 转换大量日期的有效方法 - PHP

python - 在python中将打印语句与列表理解相结合

python - 执行 OCR 的技巧 - 没有得到想要的结果

javascript - 创建一个 JS 服务器,用于归档一周前的数据

php - MySQL 按 (Varchar) 时间选择

grails - 如何在grasp gsp中使用g:datePicker来选择时间?