Python 计算前X秒数的日期时间

Python 计算前X秒数的日期时间,python,numpy,datetime,timedelta,Python,Numpy,Datetime,Timedelta,我正在尝试编写一个函数,它在给定的_日期之前用x秒计算日期间隔。上一个日期的每个索引都是给定日期之前的时间(以秒为单位) 预期产量 [2017-09-15 11:39:00 2017-09-15 11:38:00 2017-09-15 10:40:30] 90秒不是日期或时间,因此不是np.datetime64-它是一个时间段,因此是一个时间段。这里是np.array[901503600]中的'm','m': @forcebru提供的解决方案效果很好,我只想在此指出另外两件事: import

我正在尝试编写一个函数,它在给定的_日期之前用x秒计算日期间隔。上一个日期的每个索引都是给定日期之前的时间(以秒为单位)

预期产量

[2017-09-15 11:39:00 2017-09-15 11:38:00 2017-09-15 10:40:30]
90秒不是日期或时间,因此不是np.datetime64-它是一个时间段,因此是一个时间段。这里是np.array[901503600]中的'm','m':


@forcebru提供的解决方案效果很好,我只想在此指出另外两件事:

import numpy as np

given_date = np.datetime64('2017-09-15 11:40:30')
previous_dates = np.array([90, 150, 3600])  # since it's just seconds, no 'm' needed
print(given_date - previous_dates)  # @forcebru solution still works

# you just subtract seconds, so that works, but if you'd want to do something else
fdates = np.vectorize(lambda d: given_date - np.timedelta64(d, 's'))
result = fdates(previous_dates)
print(result)
第二部分给出了相同的结果,但当然可以在lambda中做不同的事情,或者稍微复杂一些

因为你只是在减去秒,你也可以使用更简单的解决方案,你甚至不需要'm'指示,因为当从时间中减去时,整数将被解释为秒

而且,由于您通常不想也不应该让lambdas留在身边,因此可以保存一行:

result = np.vectorize(lambda d: given_date - np.timedelta64(d, 's'))(previous_dates)
print(result)
当然,也可以跳过作业直接打印结果

import numpy as np

given_date = np.datetime64('2017-09-15 11:40:30')
previous_dates = np.array([90, 150, 3600])  # since it's just seconds, no 'm' needed
print(given_date - previous_dates)  # @forcebru solution still works

# you just subtract seconds, so that works, but if you'd want to do something else
fdates = np.vectorize(lambda d: given_date - np.timedelta64(d, 's'))
result = fdates(previous_dates)
print(result)
result = np.vectorize(lambda d: given_date - np.timedelta64(d, 's'))(previous_dates)
print(result)