Рассчитать unix отметок времени для полуночи - PullRequest
0 голосов
/ 14 июля 2020

У меня есть интервал Unix временных меток (с 1970 года), начиная с 1593262800000 (2020-06-27) до 1594142579000 (2020-07-07). Теперь я хотел бы вычислить все временные метки для полуночи в этом интервале. Это означает полночь 27.06.2020, полночь 28.06.2020 и т. Д.

Как я могу это сделать?

Ответы [ 4 ]

2 голосов
/ 14 июля 2020

Вот так?

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  
1 голос
/ 14 июля 2020

Попробуйте следующее:

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)
0 голосов
/ 14 июля 2020

Вы можете рассмотреть возможность использования Ephem или Astropy. Оба они используются астрономами.

Лучшим подходом было бы вычислить JD сумеречного времени Заката и Рассвета и усреднить их. После этого вы можете снова конвертировать JD в Time. (Это будет самый дальний момент времени от заката и восхода солнца.)

Проверить это .

Изменить: при таком подходе время в полночь будет меняться в зависимости от местоположения.

0 голосов
/ 14 июля 2020

Я уверен, что кто-то другой придумает лучший способ, но одно быстрое и грязное решение - вы конвертируете метку времени в строку даты и устанавливаете время на 00:00:00 в строке и конвертируете ее обратно в UNIX отметку времени

...