我一直在尝试以下日期和时间操作:
import datetime
a = datetime.datetime.strptime("1899-12-30 19:45:00", "%Y-%m-%d %H:%M:%S")
b = datetime.datetime.strptime("1899-12-30 12:42:00", "%Y-%m-%d %H:%M:%S")
print (a-b)
print (a/b)
a-b工作超级,但是a / b崩溃:TypeError:不支持的操作数类型为/:'datetime.datetime'和'datetime.datetime'
关于如何计算日期和时间价值之间关系的任何想法?我是否需要明确地首先计算每个变量a和b中的秒数,或者是否有较短的捷径?
如果我需要计算秒数。我该怎么做?我试过了
s = a.total_seconds()
which gives: AttributeError: 'datetime.datetime' object has no attribute 'total_seconds'
(我正在使用Python 3.3)
答案 0 :(得分:5)
你必须区分datetime.datetime
(这是一个实际的日期和时间,例如“1899-12-30 19:45:00”)和datetime.timedelta
(这是一个时期) ,例如“1小时”)。
请注意,a-b
两个日期时间的减法将导致timedelta。
如果你正在计算比赛时间,你必须指定比赛的开始时间(无论如何,你怎么知道比赛的持续时间)。然后就可以了
import datetime
start = datetime.datetime.strptime("1899-12-30 12:00:00", "%Y-%m-%d %H:%M:%S") # whatever the start time is
a = datetime.datetime.strptime("1899-12-30 19:45:00", "%Y-%m-%d %H:%M:%S")
b = datetime.datetime.strptime("1899-12-30 12:42:00", "%Y-%m-%d %H:%M:%S")
print (a-b) # it will give you the timedelta difference between racer "a" and racer "b"
print (a-start).total_seconds()/(b-start).total_seconds() # it will give you the ratio between "a" and "b" race times
未定义日期时间。但是timedelta对象有total_seconds()
,它给你一个数字(以秒为单位的周期长度),你可以划分数字。
答案 1 :(得分:0)
从零日期开始的秒数:
x = datetime.datetime(1, 1, 1, 0, 0)
print (a-x).total_seconds()
答案 2 :(得分:0)
datetime.timedelta支持鸿沟的运作方式如manual
所示所以,我认为你应该这样做:
a_interval = a - datetime.datetime.min
,b_interval = b - datetime.datetime.min
print(a_interval - b_interval)
和print(a_interval / b_interval)
我希望这可以帮到你