#python #datetime
#python #дата и время
Вопрос:
Я пытаюсь преобразовать даты из 2016-04-30T00:00:00Z
2016-04-30
в. Я получаю успех от первых двух. Однако, в случае последнего, я получаю ValueError: time data '2021-12-31T15:28:43.040Z' does not match format '%Y-%m-%dT%H:%M:%SZ'
. Как я могу это исправить?
Я пробовал с:
from datetime import datetime
date_list = [
'2016-04-30T00:00:00Z',
'2007-10-31T00:00:00Z',
'2021-12-31T15:28:43.040Z'
]
for raw_date in date_list:
_date = datetime.strptime(raw_date, '%Y-%m-%dT%H:%M:%SZ').strftime('%Y-%m-%d')
print(_date)
Комментарии:
1. Если даты совпадают, просто используйте
raw_date[:10]
2. ‘2021-12-31T15:28:43.040Z’ будет ‘%Y-%m-% dT%H:%M:%S.% f%z’.
Ответ №1:
Быстрое исправление, я сделаю это.
for raw_date in date_list:
_date = datetime.strptime(raw_date.split('T')[0], '%Y-%m-%d').strftime('%Y-%m-%d')
print(_date)
или
for raw_date in date_list:
_date = raw_date.split('T')[0]
print(_date)
Ответ №2:
Если вы можете использовать вызываемую библиотеку pandas
, это было бы намного проще:
from pandas import to_datetime
date_list = [
'2016-04-30T00:00:00Z',
'2007-10-31T00:00:00Z',
'2021-12-31T15:28:43.040Z'
]
print(to_datetime(date_list).strftime('%Y-%m-%d'))
Если у вас нет этой библиотеки, попробуйте это:
date_list = [
'2016-04-30T00:00:00Z',
'2007-10-31T00:00:00Z',
'2021-12-31T15:28:43.040Z'
]
for raw_date in date_list:
_date = raw_date.split('T')[0]
print(_date)