проблема перевода даты с английского на французский - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь преобразовать дату на английском (2019-10-07) во французский (07/10/2016)

Я пытаюсь

dat = '07/10/2019'
dat = time.strftime('%Y-%m-%d') 

, но получил результат '2019-10-16 'вместо' 2019-10-07 '

Ответы [ 3 ]

0 голосов
/ 16 октября 2019

strftime требуется время / дата для конвертации, и она будет использовать текущую дату и время, если вы их не предоставите. Предыдущее значение dat не имеет значения - эта информация не видна strftime.

Вам необходимо предоставить информацию о времени, которую strftime отформатирует, как кортеж, который вы можете получить разбор исходная строка. Для этого используйте strptime (f для формата, p для синтаксического анализа).

Итак:

dmy = '07/10/2019'
ymd = time.strftime('%Y-%m-%d', time.strptime(dmy, '%d/%m/%Y'))
#                    ^^^^^^^^                       ^^^^^^^^
#                    output schema                  input schema
# now ymd is '2019-10-07'

(Или вы можете использовать модуль datetime, как в другом ответе. Таким образом, синтаксический анализ дает вам объект, который имеет метод для форматирования назад - так что вы можете записать всю операцию «по порядку» в строке. Но общий принцип тот же: вам нужноразберите, затем отформатируйте, и вам нужно указать схему на каждой стороне.)

0 голосов
/ 16 октября 2019

с:

dat = time.strftime('%Y-%m-%d')

вы восстанавливаете фактическую дату.

вам нужно сделать:

from datetime import datetime

dat = '07/10/2019'
dat = datetime.strptime(dat, '%m/%d/%Y')

print(dat.strftime('%Y-%m-%d') )
0 голосов
/ 16 октября 2019

с помощью datetime вы можете выбрать формат, в котором указана исходная дата, и целевой формат, который вы хотите.

from datetime import datetime

dat = '07/10/2019'
datetime.strptime(dat, "%d/%m/%Y").strftime("%Y-%m-%d")

out[6]: '2019-10-07'

...