Я хочу считать дни до дня рождения. У меня есть строка с датой рождения:
"1949-10-09T00:25:51.304Z"
и
tday = datetime.now().isoformat()
, которая возвращает
2020-08-05T21:02:31.532123
<class 'str'>
, и мне интересно, как создать дельта-время этих двух строки.
Я вижу разницу между этими строками:
"1949-10-09T00:25:51.304Z" # date of birth
"2020-08-05T21:02:31.532123" # today
Нужно ли мне менять строку «сегодня» (фрагмент, чтобы получить:
"2020-08-05T21:02:31.532"
, а затем объедините «Z», чтобы получить:
"2020-08-05T21:02:31.532Z"
, а затем преобразовать это в объект с помощью datetime.strptime () и преобразовать дату дня рождения в дату объекта, используя это?
birthday = datetime.fromisoformat('1949-10-09T00:25:51.304Z')
Или есть более умный способ сделать это?
Чтобы получить строку дня рождения, я должен использовать эту функцию, которая анализирует JSON файл.
date=get_double_nested_table_data(0, "dob", "date")
birthday = datetime.fromisoformat(date)
now = datetime.now()
delta = now - birthday
Это не работает.
Я сделал это, используя ответ ниже:
def get_days_until_birthday(index: int, first_table: str, second_table: str):
birthday_str = get_double_nested_table_data(index, first_table, second_table)
birthday = datetime.strptime(birthday_str, "%Y-%m-%dT%H:%M:%S.%fZ")
now = datetime.now()
delta = now - birthday
return delta.days
, который возвращает такие строки: странные целые числа
Я изменил эту функцию на эту:
def get_days_until_birthday(index: int, first_table: str, second_table: str):
now = datetime.now()
year = now.year
birthday_str = get_double_nested_table_data(index, first_table, second_table)
birthday_str = str(year) + birthday_str[4:]
birthday = datetime.strptime(birthday_str, "%Y-%m-%dT%H:%M:%S.%fZ")
now = datetime.now()
delta = now - birthday
return delta.days
, и это отлично работает, только если день рождения наступит в этом году. Эта функция не возвращает правильные дни, если день рождения будет в следующем году. * 1 041 *
Не могли бы вы это изменить?