使用Python 2.6
鉴于以下代码行,如何从数据库中的变量动态构建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)
答案 0 :(得分:10)
也许您误解%
运算符用于string formatting operation;它用于制作一个字符串。
>>> 'timedelta(%s=%d)' % ('days', 2)
'timedelta(days=2)'
使用**
operator动态传递关键字参数:
>>> datetime.timedelta(**{'days': 2})
datetime.timedelta(2)
>>> interval_type = 'days'
>>> interval_num = 2
>>> datetime.timedelta(**{interval_type: interval_num})
datetime.timedelta(2)