计算午夜的 unix 时间戳

Calculate unix timestamps for midnight

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

我该怎么做?

像这样?

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  

试试这个:

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)

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

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

检查this

编辑:使用这种方法,午夜时间将因位置而异。