time.strptime изменяет форматирование вывода - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь изменить формат вывода по умолчанию 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 '. </p>

Большое спасибо заранее за любые предложения.

С уважением, Якуб

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

date объекты имеют метод, strftime, для ручного указания формата, но у него нет возможности делать то, что вы хотите - так что это означает, что вам нужно создать строку самостоятельно из других атрибутовdate_oncall.Хорошей новостью является то, что это довольно просто:

>>> '{d.day}-{d.month}-{d.year}'.format(d=date_oncall)
'17-1-2010'
0 голосов
/ 10 февраля 2012

проверьте эту ссылку:

http://www.tutorialspoint.com/python/time_strftime.htm

. Используя

time.strftime(string[, format])

, вы можете указать формат дня месяца без '0' в начале, используя "% e".

...