我想打印两个日期之间的时间增量,不包括秒或纳秒。我还希望能够只提取一天或一个月的数据。这可能吗?
这是目前为止我写的代码:
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)
如果要忽略原datetime
s中的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
本身的数据,因为其他答案已经充分涵盖了这一点(在实践中,我发现大多数人希望或可以容忍对输入执行截断,而不是对结果执行截断)。