python возраст по дате рождения
Возраст от даты рождения в python
15 ответов
Это можно сделать намного проще, учитывая, что int (True) равен 1, а int(False) равен 0:
обновление: использовать Дэнни!—5—> лучше
в Python 3 Вы можете выполнить разделение на datetime.timedelta :
самый простой способ-использовать python-dateutil
как предложено @[Tomasz Zielinski] и @Williams python-dateutil может сделать это всего 5 строк.
данное решение действительно вызывает исключение, когда 29 февраля вступает в игру. Вот правильная проверка:
Upd2:
вызов нескольких вызовов now() a производительность хита смешна, это не имеет значения во всех, но чрезвычайно особых случаях. Реальная причина для использования переменной риска incosistency данных.
классический gotcha в этом сценарии, Что делать с людьми, родившимися на 29-й день февраля. Пример: вы должны быть в возрасте 18 лет голосовать, водить машину, покупать алкоголь и т. д. если вы родились в 2004-02-29, каков первый день, когда вам разрешено делать такие вещи: 2022-02-28 или 2022-03-01? AFAICT, в основном первый, но некоторые Кайфоломы могут сказать последнее.
вот код, который обслуживает 0.068% (приблизительно) населения, рожденного на этом день:
вот решение, чтобы найти возраст человека, как лет или месяцев или дней.
или если он родился 2012-12-17T00:00:00, его возраст на 2013-01-12T00:00:00 будет 26 дней
или если он родился на 2000-02-29T00:00:00, его возраст на 2012-02-29T00:00:00 будет 12 лет
вам понадобится импорт datetime.
некоторые дополнительные функции, используемые в вышеуказанных кодах:
Теперь мы должны кормить get_date_format() строки типа 2000-02-29T00:00:00
будет преобразуйте его в объект типа даты, который должен быть подан в get_person_age (date_birth, date_today).
функции get_person_age (date_birth, date_today) возвращает возраст в строковом формате.
Если вы хотите напечатать это на странице с помощью шаблонов django, то может быть достаточно следующего:
расширения Дэнни!—5—>, но со всеми видами способов сообщить возраст для молодых людей (обратите внимание, сегодня datetime.date(2015,7,17) ):
поскольку я не видел правильной реализации, я перекодировал свой таким образом.
Возраст от даты рождения в питоне
16 ответов
Это можно сделать гораздо проще, учитывая, что int (True) равен 1 и int (False) равно 0:
Обновление: Используйте решение Danny, лучше
В Python 3 вы можете выполнить деление на datetime.timedelta :
По предложению @[Tomasz Zielinski] и @Williams python-dateutil может сделать это всего за 5 строк.
Это решение действительно вызывает исключение, когда вступает в игру 29 февраля. Здесь правильная проверка:
UPD2:
Вызов нескольких вызовов на now() поражает производительность, это не имеет значения во всех, кроме исключительно особых случаях. Настоящей причиной использования переменной является риск несогласованности данных.
Здесь код, который обслуживает 0,068% (приблизительно) населения, родившегося в этот день:
Развернувшись на Danny Solution, но со всеми возможными способами сообщать о возрасте для молодых людей (заметьте, сегодня datetime.date(2015,7,17) ):
Если вы хотите распечатать это на странице с помощью шаблонов django, может потребоваться следующее:
Вот решение, чтобы найти возраст человека как годы или месяцы или дни.
Предположим, что дата рождения человека 2012-01-17T00: 00: 00 Поэтому его возраст на 2013-01-16T00: 00: 00 будет 11 месяцев
или если он родился на 2012-12-17T00: 00: 00, его возраст на 2013-01-12T00: 00: 00 будет 26 дней
или если он родился на 2000-02-29T00: 00: 00, его возраст на 2012-02-29T00: 00: 00 будет 12 лет
Вам нужно импортировать datetime.
Некоторые дополнительные функции, используемые в приведенных выше кодах, следующие:
Теперь нам нужно кормить get_date_format() со строками типа 2000-02-29T00: 00: 00
Он преобразует его в объект типа даты, который должен быть отправлен в get_person_age (date_birth, date_today).
Функция get_person_age (date_birth, date_today) возвращает возраст в формате строки.
Возраст от даты рождения в python
15 ответов:
Это можно сделать гораздо проще, учитывая, что int (True) равен 1, а int (False) равен 0:
В Python 3 можно выполнить деление на datetime.timedelta :
Самый простой способ-использовать python-dateutil
По предложению @[Tomasz Zielinski] и @Williams python-dateutil может сделать это всего за 5 строк.
Это решение действительно вызывает исключение, когда 29 февраля вступает в игру. Вот правильная проверка:
Upd2:
Вызов нескольких вызовов для now() хита производительности смешон, это не имеет значения в все, кроме исключительно особых случаев. Реальная причина использования переменной-риск несистематичности данных.
Вот код, который обслуживает 0,068% (приблизительно) населения, родившегося в этот день:
Вот решение, чтобы найти возраст человека, как годы или месяцы или дни.
Вам нужно будет импортировать datetime.
Некоторые дополнительные функции, используемые в вышеуказанных кодах:
Теперь мы должны кормить get_date_format () строками типа 2000-02-29T00:00:00
Функция get_person_age(date_birth, date_today) вернет возраст в строковом формате.
Если вы хотите напечатать это на странице с использованием шаблонов django, то может быть достаточно следующего:
Поскольку я не видел правильной реализации, я перекодировал свой таким образом.
Возраст от даты рождения в питоне
16 ответов
Это можно сделать намного проще, учитывая, что int (True) равно 1, а int (False) равно 0:
К сожалению, вы не можете просто использовать timedelata, поскольку наибольшая единица, которую он использует, это день, а високосные годы сделают ваши вычисления недействительными. Поэтому давайте найдем количество лет, а затем скорректируем его на единицу, если последний год не был полным:
Это решение действительно вызывает исключение, когда 29 февраля вступает в игру. Вот правильная проверка:
Upd2:
Называть множественные вызовы now() ударом производительности нелепо, это не имеет значения во всех случаях, кроме крайне особых случаев. Настоящей причиной использования переменной является риск несогласованности данных.
Расширение на Решение Дэнни, но с помощью всевозможных способов сообщать о возрастах для молодых людей (обратите внимание, сегодня <
Вот решение, чтобы найти возраст человека в годах, месяцах или днях.
Некоторые дополнительные функции, используемые в приведенных выше кодах:
Функция get_person_age (date_birth, date_today) возвращает возраст в строковом формате.
В Python 3 вы можете выполнить деление на datetime.timedelta :
Если вы хотите напечатать это на странице с использованием шаблонов django, тогда может быть достаточно следующего:
По предложению @ [Tomasz Zielinski] и @Williams python-dateutil может сделать это всего за 5 строк.
Возраст от даты рождения в питоне
Это можно сделать намного проще, учитывая, что int (True) равно 1, а int (False) равно 0:
В Python 3 вы можете выполнить деление на datetime.timedelta :
По предложению @ [Tomasz Zielinski] и @Williams python-dateutil может сделать это всего за 5 строк.
К сожалению, вы не можете просто использовать timedelata, поскольку наибольшая единица, которую он использует, это день, а високосные годы сделают ваши вычисления недействительными. Поэтому давайте найдем количество лет, а затем скорректируем его на единицу, если последний год не был полным:
Это решение действительно вызывает исключение, когда 29 февраля вступает в игру. Вот правильная проверка:
UPD2:
Называть несколько вызовов now() хитом производительности нелепо, это не имеет значения во всех случаях, кроме крайне особых случаев. Настоящей причиной использования переменной является риск несогласованности данных.
Вот код, который обслуживает 0,068% (приблизительно) населения, родившегося в этот день:
Если вы хотите напечатать это на странице с использованием шаблонов django, тогда может быть достаточно следующего:
Вот решение, чтобы найти возраст человека в годах, месяцах или днях.
Допустим, дата рождения человека 2012-01-17T00: 00: 00, поэтому его возраст на 2013-01-16T00: 00: 00 будет 11 месяцев.
Некоторые дополнительные функции, используемые в приведенных выше кодах:
Теперь мы должны передать get_date_format () в виде строк, таких как 2000-02-29T00: 00: 00
Функция get_person_age (date_birth, date_today) возвращает возраст в строковом формате.