使用时间,日期,timedelta

She*_*284 3 python datetime numpy scipy

我有一个问题,我的工作时间和时间差异很大.到目前为止,我已经使用许多if语句解决了这个问题,但这些都容易出错.在寻找更好的解决方案而不重新发明轮子时,我遇到了时间,日期和时间.但这些对我来说似乎太不灵活,所以我正在寻找有关如何使用python的内置函数解决这个问题的想法和提示 - 如果可能的话.这就是问题:将从条带到规则网格的卫星数据分箱涉及大量简单的时间计算.如果我有日期整数:200702100700我想从这样的时间格式中添加和减去小时和分钟,这样日期 - 18会给我一个考虑闰年的新日期,可以跨越,年,月,日向后和转发.这是我对python的datetime包的理解:

from datetime import timedelta, date, time
t1 = date(2007,01,01); t = time(12,0); t2 = datetime.combine(t1,t)
t3 = timedelta(hours=18); t4 = t2 - t3; t5 = t2 + t3
print t4
>>>datetime.timedelta(2006, 23401, 3001)
Run Code Online (Sandbox Code Playgroud)

这个时间在用于进行数千次计算的脚本中不是很有用.我的问题是t4没有年,月或日对象,而2006似乎被视为小时.这一切都非常令人困惑.这可能在python/numpy/scipy中吗?如果是这样,有人可以给我一个提示吗?

Phi*_*per 6

Gerrat做对了,使用了datetime对象.

您可以完全创建日期时间对象,而无需单独创建日期和时间(或使用datetime.strptime()).

BUG ALERT您的代码和一些发布的响应将注入一个难以察觉的错误.

// this works
datetime(2007,01,01,12)
// this breaks
datetime(2007,01,09,12)
Run Code Online (Sandbox Code Playgroud)

在python中,在"09"中键入"0"使其在代码中使用日期时为八进制数("09"无效),避免前导零.