Добавление timedelta в Timefield
Альманах документация Skyfield
использует этот код, чтобы определить моменты времени, между которыми нужно вычислять восход и закат солнца:
t0 = ts.utc(2018, 9, 12, 4)
t1 = ts.utc(2018, 9, 13, 4)
Что если я просто хочу использовать одну (начальную) дату и установить следующую дату ровно через день? Я не могу просто добавить один к day
аргумент, так как это не будет правильным в конце месяца.
Использование Python datetime
Я мог бы сделать это с помощью
from datetime import datetime, timedelta
datetime(2019, 1, 31, 12) + timedelta(days=1)
# datetime.datetime(2019, 2, 1, 12, 0)
но я не могу найти ничего подобного timedelta
в документации по skyfield API.
2 ответа
Что если я просто хочу использовать одну (начальную) дату и установить следующую дату точно на один день позже? Я не могу просто добавить один к аргументу дня, так как это не будет правильно в конце месяца.
К счастью, вы можете просто добавить один в день! Как сказано в документации:
https://rhodesmill.org/skyfield/time.html
"Вы можете предоставить значения за пределами допустимого диапазона и предоставить Skyfield возможность получить правильный результат"
>>> from skyfield.api import load
>>> ts = load.timescale()
[#################################] 100% deltat.data
>>> t = ts.utc(2018, 2, 28 + 1)
>>> t.utc_jpl()
'A.D. 2018-Mar-01 00:00:00.0000 UT'
Ты можешь использовать datetime
"s timedelta
и преобразовать обратно между datetime
и скайфилд Time
объекты как это:
t0 = ts.utc(2019, 1, 31, 12)
t1 = ts.utc(t0.utc_datetime() + timedelta(days=1))
# Print
t1.utc_iso()
# '2019-02-01T12:00:00Z'
Хотя, конечно, не красиво, это позволяет вам использовать все возможности Python datetime
,