LINUX.ORG.RU

Узнать количество лет на сегодняшний день?

 ,


0

2

Использую sqlite3 и python, есть список дат рождения в формате datetime «Y-m-d», нужно отсечь на два запроса по количеству: один от 18 < 56.5 лет, другой >=56,5 лет и старше, на сегодняшний день.



Последнее исправление: bad_master (всего исправлений: 1)

Ответ на: комментарий от futurama

182 дня и 15 часов тогда. Но тут проблема в том, что возраст по часам не считается, а отсчитывается от 00:00 дня рождения, да и дата рождения не включает точное время — время рождения округляется до целых дней вниз. Значит логично и в программе округлять до целых дней вниз, соответственно 182 дня. Осталось определиться, 56.5 лет это наши условные 182 дня с последнего дня рождения, или наши условные 182 дня до следующего дня рождения. :D

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 2)
pm=pd=100
y1=pm*pd
def d2n(d:datetime): return d.year*pm+d.month+d.day
def years(cur,bd): return (d2n(cur)-d2n(bd))//y1

число полный лет определяется очень просто(если вид (YY)YYMMDD)

переводишь строку в числа делаешь разность и делишь(цело) на 10 в степени числа знакомест MMDD - результат полное число лет

с полгода - самый sql вариант делаешь таблицу соответствия с движкой на 182(3)

али переводишь ммдд в день года прибавляешь 182(183) если переполнение то увеличиваешь год

нумерацию дней с нуля али с единицы 0 тогда по разному

ну и вот снова считаешь полное число лет и сравниваешь ...

qulinxao3
()
Ответ на: комментарий от AntonI

По месту рождения, месту нахождения человека, месту нахождения разработчика/владельца сервиса/сервера?:-)

Наверное по месту нахождения владельца / того, кому этот возраст важен.

Интересно, как это юридически работает в физическом мире? Наверное по месту нахождения организации. Ну то есть, например, человек родился и жил в Калинингране, а на 18-й день рождения утром поехал в Анадырь. По месту рождения у него ДР, и ему 18, а в Анадыре ещё вечер предыдущего числа. Практически уверен, что ему не продадут алкоголь, потому что по местному времени его день рождения ещё не наступил. Проверять-то будут по паспорту, а там только дата рождения. Места рождения нет, а место выдачи паспорта значения не имеет.

Наерное так же и тут — по месту нахождения/регистрации «сервиса».

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от J

182 дня и 15 часов. Потому что в году 365.25 дней. если точнее, то 365.2425, но сервис не работал в 1900 и вряд ли доработает до 2100, когда это будет иметь значение, посему для ныне живущих людей на относительно краткосрочный период (меньше века) надо брать 365.25.

Но см. выше. Возраст считается не от точного времени рождения, а от дня рождения (судя по всему от 00:00 этого дня). Соответственно с нецелыми днями не работает.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от xmikex

А, блин. И правда. My bad.

Тем не менее, сомневаюсь, что в приведённом примере на неё будут смотреть (с целью определения точного возраста). Или будут?

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)