代码之家  ›  专栏  ›  技术社区  ›  Uli Köhler

将时间增量添加到skyfield时间

  •  2
  • Uli Köhler  · 技术社区  · 7 年前

    这个 skyfield Almanach documentation

    使用此代码定义计算sunrise&的时间点;日落:

    t0 = ts.utc(2018, 9, 12, 4)
    t1 = ts.utc(2018, 9, 13, 4)
    

    如果我只是想使用 一 day 因为这在月底是不正确的。

    datetime

    from datetime import datetime, timedelta
    
    datetime(2019, 1, 31, 12) + timedelta(days=1)
    # datetime.datetime(2019, 2, 1, 12, 0)
    

    但我找不到像这样的东西 timedelta

    2 回复  |  直到 7 年前
        1
  •  5
  •   Brandon Rhodes    7 年前

    如果我只想使用一个(开始)日期,并将下一个日期设置为正好在一天后,该怎么办?我不能只在day参数中添加一个,因为这在月底是不正确的。

    幸运的是,你可以在一天中添加一个!正如文件所说:

    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'
    
        2
  •  0
  •   Uli Köhler    7 年前

    你可以用 datetime 的 timedelta 还有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的所有功能 .

    推荐文章