У меня проблема, когда я много работаю с разницей времени и времени. До сих пор я решил это, используя множество операторов if, но они подвержены ошибкам. В поисках лучшего решения и не изобретая колесо, я натолкнулся на время, дату и timedelta. Но они кажутся слишком негибкими для меня, поэтому я ищу идеи и советы о том, как решить эту проблему, используя встроенные функции python - если это возможно. Вот проблема: объединение спутниковых данных с валов в регулярную сетку включает в себя множество простых вычислений времени. Если у меня есть целое число date: 200702100700 Я хочу добавить и вычесть часы и минуты из такого формата времени, чтобы дата - 18 дала мне новую дату, которая учитывает високосный год и может пересекать, год, месяц, день назад и вперед. Вот что я понимаю пакет даты и времени питона:Работа со временем, датой, timedelta
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)
На этот раз не очень полезный в скрипте, который будет делать тысячи расчетов. Моя проблема в том, что у t4 нет объектов года, месяца или дня, а в 2006 году, как представляется, рассматриваются как часы. Все это очень запутанно. Возможно ли это в python/numpy/scipy? Если да, может кто-нибудь дать мне подсказку?
Nice catch Phil. Я бы никогда не превзошел любые цифры с помощью «0» в моем собственном коде, но на самом деле не думал о разветвлениях здесь. – Gerrat
Отличный пункт! Я обязательно сделаю это. Часто основной причиной такого заполнения является поиск строки файла или создание такой строки. Мои файлы такие. – Shejo284