Как получить текущее время в секундах?

Мне нужно получить нынешнее время в секундах. Как я могу это сделать? С помощью time.time() я получаю неправильные данные, то есть не 2021 год, а 51 год.


Ответы (2 шт):

Автор решения: Alxolo

time.time() возвращает текущее время в секундах отсчитваемых от 1-го Января 00:00:00 1970 г. Отсюда и 51 год :-) Определитесь от которой точки во времени вам нужно отсчитывать секунды и соответственно пересчитайте. Откуда вам нужно время в секундах? От Рождества Христова, т.е. от начала нашей эры? Если, да то довольно муторное занятие, нужно будет обрабатывать високосные годы.

→ Ссылка
Автор решения: eri

Если считать от нашей эры,то

import datetime
(datetime.datetime.now() - datetime.datetime(1, 1, 1, 0, 0)).total_seconds()

Високосные года учитываются, но

Но всеравно не будет 2021 потому как наша эра началась в первом году. Нулевого никогда не было несмотря на ISO8601 и Питон его не поддерживает.

Хотя можно добавить виртуальный год

(datetime.datetime.now()-datetime.datetime(1,1,1)+ datetime.timedelta(days=366)).total_seconds()

738499 дней в итоге.

Разделим эти дни на года тупым методом:

>>> def ygen():
...   while True:
...     yield 366
...     yield 365
...     yield 365
...     yield 365
... 
>>> d = 738499
>>> yg=ygen()
>>> y=0
>>> while d>365:
...   d-=next(yg)
...   y+=1
... 
>>> y
2021
>>> d
328

И получается 2021 год и 328 дней от нулевого года - что-то маловато... гдето потерялась пара недель =) (сегодня 344 день)

>>> def vis(y):
...     if y % 400 == 0: return 366
...     if y % 100 == 0: return 365
...     if y % 4 == 0: return 366
...     return 365
... 
>>> 
>>> d = 738499
>>> y = 0
>>> 
>>> while d>=vis(y):
...     d -= vis(y)
...     y += 1
...
>>> d
343
>>> y
2021

343 дня прошло, идет 344ый - вроде все сошлось

→ Ссылка