【问题标题】:Calculate unix timestamps for midnight计算午夜的 unix 时间戳
【发布时间】:2020-07-13 21:47:58
【问题描述】:

我有一个从 1593262800000 (2020-06-27) 到 1594142579000 (2020-07-07) 的 Unix 时间戳间隔(从 1970 年开始)。现在,我想计算此时间间隔内午夜的所有时间戳。这意味着 2020 年 6 月 27 日午夜,2020 年 6 月 28 日午夜等等。

我该怎么做?

【问题讨论】:

    标签: python unix-timestamp python-datetime


    【解决方案1】:

    像这样?

    import datetime
    
    ms_per_day = 24 * 3600 * 1000
    
    a = 1593262800000
    b = 1594142579000
    
    ms_until_midnight = ms_per_day - a % ms_per_day 
    
    for e in range(a + ms_until_midnight, b, ms_per_day):
        print(e, datetime.datetime.utcfromtimestamp(e/1000))
    

    输出:

    1593302400000 2020-06-28 00:00:00
    1593388800000 2020-06-29 00:00:00
    1593475200000 2020-06-30 00:00:00
    1593561600000 2020-07-01 00:00:00
    1593648000000 2020-07-02 00:00:00
    1593734400000 2020-07-03 00:00:00
    1593820800000 2020-07-04 00:00:00
    1593907200000 2020-07-05 00:00:00
    1593993600000 2020-07-06 00:00:00
    1594080000000 2020-07-07 00:00:00  
    

    【讨论】:

      【解决方案2】:

      试试这个:

      import datetime
      sec_per_day = 24*60*60
      timestamp1 = datetime.datetime(2020,6,27).timestamp()
      timestamp2 = datetime.datetime(2020,7,07).timestamp()
      timestamps = list(range(timestamp1, timestamp2, sec_per_day))
      print(timestamps)
      

      【讨论】:

        【解决方案3】:

        您可以考虑使用 Ephem 或 astropy。两者都被天文学家使用。

        最好的方法是计算黄昏和黎明黄昏时间的JD 并将它们平均。之后,您可以再次从 JD 转换为 Time。 (这将是距离日落和日出最远的时间点。)

        检查this

        编辑:使用这种方法,午夜时间会因地点而异。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-30
          相关资源
          最近更新 更多