如何从时间增量中删除秒和微秒?



我想打印两个日期之间的时间增量,不包括秒或纳秒。我还希望能够只提取一天或一个月的数据。这可能吗?

这是目前为止我写的代码:

import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta)

要获得没有秒和微秒,请使用slice字符串版本

from datetime import datetime
delta = datetime(2021, 9, 10, 10, 00) - datetime.now()
print(delta)             # 15 days, 11:24:04.767145
print(str(delta)[:-10])  # 15 days, 11:24

使用days属性

获取天数(或月份)
from datetime import datetime
delta = datetime(2021, 9, 10, 10, 00) - datetime.now()
print(delta.days)       # 15
print(delta.days / 30)  # 0.5

您可以使用days属性来获取timedelta中的天数:

import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta.days)

<一口>Repl.it

您可以使用mod对时间戳进行四舍五入。

import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
t2s = t2.timestamp()
# mod 60 removes seconds and fractions, mod 1 would just remove fractions of second, etc
t2s = t2s - t2s % 60
t2new = datetime.datetime.fromtimestamp(t2s)
print(t2new)

如果要忽略原datetimes中的second/microsecond,则使用replace方法将其设置为0,然后进行计算:

import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)  # Already lacks seconds
t2 = datetime.datetime.today().replace(second=0, microsecond=0)  # Gets datetime without second/microsecond data
delta = t1 - t2
print(delta)

你不能从timedelta中提取月份(因为它没有天数以外的粒度;一个月或一年毕竟没有固定的长度),但是timedelta.days属性会告诉你它代表了多少完整的天。

我省略了截断timedelta本身的数据,因为其他答案已经充分涵盖了这一点(在实践中,我发现大多数人希望或可以容忍对输入执行截断,而不是对结果执行截断)。

相关内容

  • 没有找到相关文章

最新更新