【问题标题】:How to convert UTC and longitude to mean solar local time python如何将UTC和经度转换为太阳当地时间python
【发布时间】:2017-10-19 18:12:02
【问题描述】:

我正在尝试将我的 UTC 时间和经度转换为 python 中的平均太阳本地时间。

输入:

utc = ['2000-08-20 07:15:12.000']  #utc time

lon = [-89.91054415]               #longitude

我使用 astropy.time 来获取我的 UTC 时间,它是一个字符串。

【问题讨论】:

    标签: python python-2.7 datetime utc astropy


    【解决方案1】:

    天文年历解释性补充第 3 版。第 239 页指出,当地平均太阳时 LMSoT 与 UT 和观测者的东经有关

    LMSoT = UT + ƛ

    UT 通常被认为是 UT1。要将 UTC 转换为 UT1,请参阅公告 A,地址为 https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop.html

    对于 2016/08/27 UT1 - UTC = -0.243031。原始海报只能工作到毫秒,所以四舍五入到 -0.243。 2016/08/27 19:19:00.000 UTC = 19:18:59.757 UT1。

    波士顿纬度,-71.03°,转换为时间,= -4 h 44 m 7.200 s

    波士顿 LMSoT = 19:18:59.757 - 4:44:7.2000 = 14:34:52.557

    原始海报可以简化程序,具体取决于所需的实际精度。特别是 UTC 总是在 UT1 的 0.9 s 以内,所以如果不需要精确到秒,可以跳过查找 UT1 - UTC 的步骤。

    【讨论】:

    • 如何将经度转换为时间? ƛ符号代表什么?
    • ƛ 表示经度。由于一个完整的旋转可以被认为是 360° 或 24 小时,并且 360/24 = 15,所以度数除以 15 以获得小时数。
    • 由于“纬度”正确的“经度”不够,无法编辑您的帖子。因此,波士顿 longitude 实际上是 -71°03',而其纬度是 42°36'。请问可以吗?
    【解决方案2】:

    我找到了一个使用 pyephem 的解决方案 here。如果这是一个问题,它确实会考虑夏令时。

    from ephem import Sun, Observer, pi, hours
    
    dt = '2016/08/27 19:19'
    
    sun = Sun()
    sun.compute(dt)
    
    boston = Observer()
    boston.lat = '42.37'
    boston.lon = '-71.03'
    boston.date = dt
    ra, dec = boston.radec_of('0', '-90')
    
    print 'Sun right ascension:', sun.ra
    print 'Boston nadir right ascension:', ra
    print 'Solar time:', hours((ra - sun.ra) % (2 * pi)), 'hours'
    

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2013-03-12
      • 2011-05-04
      • 2021-03-20
      • 2018-11-12
      • 2015-09-26
      相关资源
      最近更新 更多