#python #datetime #date-range #timedelta #astropy
Вопрос:
Я хочу только первое и последнее значение, я имею в виду 2021-01-30 15:51:47 -2.0665672163030704 e-06 и 2021-01-30 15:51:51 -1.0708335011265263 e-05 также этот код указывает дату каждой секунды, но я хочу результат в каждую минуту.
from datetime import datetime, timedelta from astropy.time import Time start_date_time = datetime(2021, 1, 30, 15, 00, 00) end_date_time = datetime(2021,1, 30,16,00,00) time_diff = int((end_date_time - start_date_time).total_seconds()) for i in range(time_diff): day = (start_date_time timedelta(0, i)) dt = Time(day) jd =dt.jd # print(day,jd) eph = swe.calc_ut(jd,2)[0][3] if eph lt; 0: print(dt,eph) Output - 2021-01-30 15:51:47 -2.0665672163030704e-06 2021-01-30 15:51:48 -4.222647236587894e-06 2021-01-30 15:51:49 -6.384221081802716e-06 2021-01-30 15:51:50 -8.565878651309763e-06 2021-01-30 15:51:51 -1.0708335011265263e-05
Комментарии:
1. вместо диапазона(time_diff) вы можете поставить [0, time_diff], и это даст вам первое и последнее значение. Так как диапазон дает вам диапазон от 0 до time_diff.
2. чтобы уточнить, вам нужен вывод только там, где ваше условие истинно (
eph lt; 0
)? Для повторения минут вы можете просто использоватьtimedelta(minutes=i)
в своем коде.3. да, я хочу выводить только при условии true (eph
4. вместо того, чтобы просто печатать результаты, вы можете добавить их в список, а затем, наконец, выбрать первый и последний элемент этого списка.
5. Спасибо @MrFuppes Я абсолютный новичок и тренируюсь самостоятельно…
Ответ №1:
с помощью комментария выше вы можете указать ключевое слово в timedelta следующим образом:
for i in [0, time_diff]: day = (start_date_time timedelta(minutes=i))