Библиотека Python для добавления до 999999999 дней к определенной дате - PullRequest
0 голосов
/ 24 июня 2019

Я выполняю упражнение по программированию, в котором мне нужно добавить N дней к заданной дате, где N может быть до 999999999, а заданная дата - до 3000 года с использованием Python.Существуют ли какие-либо библиотеки, кроме datetime, которые могут это сделать?

Я знаю, что в Java есть библиотека, которая может делать это для больших значений N, но с Python я нашел только библиотеку с именем datetime, нопроблема в том, что 1. Это слишком медленно для больших значений N и 2. Так как N может быть до 1000000000, значение даты будет вне диапазона.

1 Ответ

1 голос
/ 24 июня 2019

datetime.date поддерживает до конца года 9999. Это кажется достаточным ... но 10 ^ 9 дней - это больше 2,5 миллионов лет.

Еще одна библиотека Python, связанная свремя называется просто time, которое работает в основном с функциями времени C.

Я обнаружил, что time.ctime() получает время в секундах от эпохи (аргумент по умолчанию соответствует текущему времени в этом формате - time.time())и выводит форматированную строку времени по умолчанию.

Вы можете проанализировать данное время, используя time.strptime(), чтобы получить структуру времени, а затем преобразовать ее в секунды эпох с помощью time.mktime().Затем добавьте ваши N дней в секундах.И вуаля!У вас есть время из эпохи для нужного вам времени.

Таким образом, lib работает только с анализом и преобразованием, но математика выполняется для целых чисел.

Проверка текущего времени (без анализаit), N = 10 ^ 9:

>>> test = time.time()
>>> print(test)
1561378571.5154927
>>> time.ctime(test)
'Mon Jun 24 14:16:11 2019'
>>> test_after_N = test + 10**9 * 24 * 3600
>>> print(test_after_N)
86401561378571.52
>>> time.ctime(test_after_N)
'Sun Jun 27 13:16:11 2739926'

Если вам нужен другой формат, вы можете проанализировать или обрезать вывод или выяснить, можно ли изменить формат по умолчанию.

Документацию к модулю можно найти здесь - https://docs.python.org/3/library/time.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...