Striptime de data e hora em python

Eu tentei o seguinte código:

import datetime d = datetime.datetime.strptime("01/27/2012", "%m/%d/%Y") print(d) 

e a saída é:

 2012-01-27 00:00:00 

Eu estou usando o Linux Mint:

 test@testsrv ~/pythonvault $ date Fri Jun 16 21:40:57 EEST 2017 

Então, a questão é por que a saída do código python retorna uma data em "%Y/%m/%d" ( 2012-01-27 ) vez do formato "%m/%d/%Y" ?

Por favor, note que estou usando o python 2.7

Qualquer ajuda seria apreciada.

Você precisa se certificar de fornecer a input de acordo

 datetime.strptime(date_string,date_string_format).strftime(convert_to_date_string_format) 

Para imprimir a data no formato especificado, você precisa fornecer o formato abaixo.

 import datetime d =datetime.datetime.strptime("01/27/2012","%m/%d/%Y").strftime('%m/%d/%Y') print d 

Saída:

 01/27/2012 

>> Demo <<

datetime.strptime(date_string, format) retorna um object datetime correspondente a date_string , analisado de acordo com o format . Quando você imprime o object de datetime , ele é formatado como uma seqüência de caracteres no formato ISO 8601, YYYY-MM-DDTHH:MM:SS

Referências:

Como astutamente observado nos comentários, você está analisando um object de data e hora usando o formato especificado.

strptime(...) é strptime(...) P ass Time . Você especificou o formato de como a cadeia deve ser interpretada para inicializar um object de data e hora, mas esse formato é utilizado apenas para boot. Por padrão, quando você vai imprimir esse object de data e hora, está obtendo a representação de str(DatetimeObjectInstance) ( no seu caso, str(d) ).

Se você quer um formato diferente, você deve usar String Time (strftime strftime(...) )

 import datetime str_time= "2018-06-03 08:00:00" date_date = datetime.datetime.strptime(str_time, "%Y-%m-%d %H:%M:%S") print date_date