将时间增量添加到天空时间
Adding a timedelta to a skyfield Time
skyfield Almanach documentation
使用此代码定义计算日出和日落的时间点:
t0 = ts.utc(2018, 9, 12, 4)
t1 = ts.utc(2018, 9, 13, 4)
如果我只想使用 one(开始)日期并将下一个日期设置为正好在一天之后怎么办?我不能只在 day
参数中加一个,因为这在月底时是不正确的。
使用 Python 的 datetime
我可以使用
from datetime import datetime, timedelta
datetime(2019, 1, 31, 12) + timedelta(days=1)
# datetime.datetime(2019, 2, 1, 12, 0)
但我在 skyfield API 文档中找不到类似 timedelta
的内容。
您可以使用 datetime
的 timedelta
并在 datetime
和 skyfield 的 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
的所有功能。
What if I just wanted to use one (start) date and set the next date to be exactly one day after? I can't just add one to the day argument since this would not be correct at the end of the month.
幸运的是,您可以在一天中添加一个!正如文档所说:
https://rhodesmill.org/skyfield/time.html
"you are free to provide out-of-range values and leave it to Skyfield to work out the correct result"
>>> 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'
skyfield Almanach documentation
使用此代码定义计算日出和日落的时间点:
t0 = ts.utc(2018, 9, 12, 4)
t1 = ts.utc(2018, 9, 13, 4)
如果我只想使用 one(开始)日期并将下一个日期设置为正好在一天之后怎么办?我不能只在 day
参数中加一个,因为这在月底时是不正确的。
使用 Python 的 datetime
我可以使用
from datetime import datetime, timedelta
datetime(2019, 1, 31, 12) + timedelta(days=1)
# datetime.datetime(2019, 2, 1, 12, 0)
但我在 skyfield API 文档中找不到类似 timedelta
的内容。
您可以使用 datetime
的 timedelta
并在 datetime
和 skyfield 的 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
的所有功能。
What if I just wanted to use one (start) date and set the next date to be exactly one day after? I can't just add one to the day argument since this would not be correct at the end of the month.
幸运的是,您可以在一天中添加一个!正如文档所说:
https://rhodesmill.org/skyfield/time.html
"you are free to provide out-of-range values and leave it to Skyfield to work out the correct result"
>>> 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'