如何从 timedelta 中删除秒和微秒?
How to remove seconds and microseconds from a timedelta?
我想打印两个日期之间的时间差,没有秒或纳秒。我还希望能够只提取日期或月份。这可能吗?
这是我目前拥有的代码:
import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta)
您可以使用 days
属性 获取 timedelta
中的天数:
import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta.days)
要得到没有秒和微秒的,使用 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
您可以在时间戳上使用 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
中的second
/microsecond
,用the replace
method将它们设置为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
中提取月份(因为它没有超过天的粒度;毕竟一个月或一年没有固定长度),但是 .days
属性timedelta
会告诉你它代表多少天。
我省略了 timedelta
本身的截断数据,因为其他答案已经充分涵盖了(实际上,我发现大多数人都希望或可以容忍正在执行的截断输入,而不是结果)。
我想打印两个日期之间的时间差,没有秒或纳秒。我还希望能够只提取日期或月份。这可能吗?
这是我目前拥有的代码:
import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta)
您可以使用 days
属性 获取 timedelta
中的天数:
import datetime
t1 = datetime.datetime(2021, 9, 10, 10, 00)
t2 = datetime.datetime.today()
delta = t1 - t2
print(delta.days)
要得到没有秒和微秒的,使用 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
您可以在时间戳上使用 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
中的second
/microsecond
,用the replace
method将它们设置为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
中提取月份(因为它没有超过天的粒度;毕竟一个月或一年没有固定长度),但是 .days
属性timedelta
会告诉你它代表多少天。
我省略了 timedelta
本身的截断数据,因为其他答案已经充分涵盖了(实际上,我发现大多数人都希望或可以容忍正在执行的截断输入,而不是结果)。