Как получить текущее время в секундах?
Мне нужно получить нынешнее время в секундах. Как я могу это сделать? С помощью time.time() я получаю неправильные данные, то есть не 2021 год, а 51 год.
Ответы (2 шт):
time.time() возвращает текущее время в секундах отсчитваемых от 1-го Января 00:00:00 1970 г. Отсюда и 51 год :-) Определитесь от которой точки во времени вам нужно отсчитывать секунды и соответственно пересчитайте. Откуда вам нужно время в секундах? От Рождества Христова, т.е. от начала нашей эры? Если, да то довольно муторное занятие, нужно будет обрабатывать високосные годы.
Если считать от нашей эры,то
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ый - вроде все сошлось