【发布时间】:2016-09-16 20:04:10
【问题描述】:
我正在尝试创建一个简单的函数,允许用户输入将更改日期时间对象的值的基本信息,我想找到一种方法,通过使用变量使其尽可能干净作为关键字。这可以很容易地以不同的方式完成,但我认为知道如何替换预设关键字会很有用。
datetime 对象有一个 .replace() 方法,可以将任何时间值作为关键字:
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
但我想让用户指定多少时间(例如,2 天;4 小时;1 个月)。
我正在尝试用存储在 time_type 变量中的任何用户输入替换上述任何关键字,直到“分钟”,但我得到“TypeError: ' time_type' 是此函数的无效关键字参数"。
start_time = datetime.datetime(2016, 09, 16, 15, 30)
def change_time(integer, time_string):
time_type = time_string.replace("s","") # de-pluralizes input
new_time = getattr(start_time, time_type) + integer
print(start_time.replace(time_type=new_time))
change_time(2, "days")
这应该会打印出新的 start_time,即 (2016, 09, 18, 15, 30),但我只是得到一个错误。
【问题讨论】:
-
构建关键字参数字典,然后使用
**解压(参见stackoverflow.com/q/36901/3001761)。