2014-02-25 47 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