2014-02-25 36 views
4

使用Python 2.6使用字符串变量格式化timedelta

鉴于以下代码行,如何从DB中的变量动态构建timedelta的值?

next_alert_date = datetime.strptime(start_due_date, '%Y-%m-%d') + timedelta(days=2) 

基本上,我需要这样的东西,但它似乎并没有工作。

SyntaxError: invalid syntax

next_alert_date = datetime.strptime(start_due_date, '%Y-%m-%d') + timedelta(%s=%d) % (interval_type, interval_num) 

回答

8

也许你误解用于string formatting operation%操作;它用来制作一个字符串。这里

>>> datetime.timedelta(**{'days': 2}) 
datetime.timedelta(2) 

>>> interval_type = 'days' 
>>> interval_num = 2 
>>> datetime.timedelta(**{interval_type: interval_num}) 
datetime.timedelta(2) 
+0

啊好吧...对不起Python的新手:

>>> 'timedelta(%s=%d)' % ('days', 2) 'timedelta(days=2)' 

使用** operator动态传递关键字参数。 :-)完美地工作,谢谢。 – luckytaxi