0

我正在尝试在我的函数中更改 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'。

非常感谢您的任何建议。

问候, 雅库布

4

2 回答 2

4

date对象有一个方法 ,strftime来手动指定格式,但它没有选项来做你想做的事 - 所以,这意味着你需要自己从date_oncall. 好消息是这很容易:

>>> '{d.day}-{d.month}-{d.year}'.format(d=date_oncall)
'17-1-2010'
于 2012-02-10T12:03:56.020 回答
0

检查此链接:

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

通过使用

time.strftime(string[, format])

您可以使用 '%e' 指定月份格式的开头不带 '0' 的日期。

于 2012-02-10T11:53:03.920 回答