2013-06-24 4 views
2

Я немного новичок в Python и имею, казалось бы, простой вопрос.Python: проблема преобразования строки в дату

У меня есть скрипт python, который взаимодействует с API (RHN Satellite, если вам интересно). Этот API возвращает дату в виде строки, и она всегда выравнивает ведущие 0. Например, 6/1/13 или 10/9/12. Мне нужно преобразовать эту строку в дату и определить день года.

Вот что я знаю:

today = datetime.datetime.now() 
print today.strftime('%j') 

... вернется сегодня день года (175). Это отлично работает для объекта datetime, но мне трудно преобразовать строку, указанную API, в фактическую дату. Если я использую:

date = datetime.datetime.strptime(var, '%m/%d/$y') 

Я получаю сообщение об ошибке:

ValueError: time data '5/2/13' does not match format '%m/%d/$y' 

Я предполагаю, потому что он ожидает ведущих 0-х? Как мне обойти это?

В конце концов, я пытаюсь вычесть дату переменной, указанную с текущей даты, но я не могу этого сделать до тех пор, пока не конвертирую строку.

Спасибо за помощь!

+5

Может быть '% y' вместо '$ y'? – alecxe

ответ

2

Я думаю, что вы просто опечатка, использовать %y вместо $y:

date = datetime.datetime.strptime(var, '%m/%d/%y') 
2

Этот код работает для меня при условии, что вы вносите код $y в формат %y.

+0

Я идиот. Ты прав. Это то, что я получаю от того, что не встаю и уйду от него на несколько минут. Спасибо:) – user2001872

2

Исправьте $y к %y, и я хотел бы использовать format вместо strftime:

from datetime import datetime 
print format(datetime.strptime('5/2/13', '%m/%d/%y'), '%j')