time.strptime改变输出格式

时间:2012-02-10 11:39:18

标签: python 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'。

提前感谢任何建议。

此致 的Jakub

2 个答案:

答案 0 :(得分:4)

date个对象有一个方法strftime来手动指定格式,但它没有选项来执行你想要的 - 所以,这意味着你需要自己构造字符串来自date_oncall的其他属性。好消息是这很容易:

>>> '{d.day}-{d.month}-{d.year}'.format(d=date_oncall)
'17-1-2010'

答案 1 :(得分:0)

检查此链接:

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

使用

time.strftime(string[, format])

您可以使用'%e'指定月初格式,而不是开头的'0'。