time.strptime изменяет форматирование вывода
Я пытаюсь изменить формат вывода по умолчанию strptime и datetime в моих функциях:
def start_week_date(year, week):
format_string = "%i %i 1" % (int(year),int(week))
start = time.strptime(format_string, '%Y %W %w')
print datetime.date(start.tm_year, start.tm_mon, start.tm_mday)
return datetime.date(start.tm_year, start.tm_mon, start.tm_mday)
вывод которого передается другому:
for date_oncall in date_range(start_week_date(year,week), start_week_date(year,week+1)):
print date_oncall
def date_range(start_date, end_date):
"""Generator of dates in between"""
if start_date > end_date:
raise ValueError("Start date is before end date.")
while True:
yield start_date
start_date = start_date + datetime.timedelta(days=1)
if start_date >= end_date:
break
Есть ли элегантный способ изменить форматирование по умолчанию, чтобы, если день месяца или месяца< 10, он не получал "0" в начале? В основном вместо '03-05-2012'я хотел бы получить'3-5-2012'.
Большое спасибо заранее за любые предложения.
С уважением, Якуб
2 ответа
date
у объектов есть метод, strftime
, чтобы указать формат вручную, но у него нет возможности делать то, что вы хотите - так что это означает, что вам нужно создать строку самостоятельно из других атрибутов date_oncall
, Хорошей новостью является то, что это довольно просто:
>>> '{d.day}-{d.month}-{d.year}'.format(d=date_oncall)
'17-1-2010'
Проверьте эту ссылку:
http://www.tutorialspoint.com/python/time_strftime.htm
используя
time.strftime(string[, format])
Вы можете указать формат дня месяца без '0' в начале, используя '%e'.