Различные результаты даты из библиотеки стрелок в Python
(Pdb) arrow.get('2016-01-01')
<Arrow [2016-01-01T00:00:00+00:00]>
(Pdb) arrow.get('20160101')
<Arrow [1970-08-22T08:01:41+00:00]>
Итак, я хочу, чтобы моя функция могла использовать arrow
библиотека в python для разбора строк дат. Однако, как видно из приведенного выше кода, он дает разные результаты в зависимости от того, -
присутствует в строке даты или нет. Как я могу изменить его так, чтобы он давал одинаковые результаты для обоих?
1 ответ
Решение
Просто предоставьте строку формата для второго объекта
arrow.get('20160101', 'YYYYMMDD')
Библиотека, вероятно, по умолчанию использует стандартный формат даты iso, но если вы не используете это, вам нужно указать, как интерпретировать строку.
В ответе
>>> arrow.get('2016-01-01')
<Arrow [2016-01-01T00:00:00+00:00]>
>>> arrow.get('20160101', 'YYYYMMDD')
<Arrow [2016-01-01T00:00:00+00:00]>
Чтобы использовать общий вызов, когда присутствуют тире или нет, вы можете удалить тире
import arrow
vals = ['2016-01-01', '20160101']
for v in vals:
d = v.replace('-', '')
print(arrow.get(d, 'YYYYMMDD'))