简体   繁体   English

如何将动态 arguments 传递给 datetime.timedelta function?

[英]How pass dynamic arguments to the datetime.timedelta function?

I'm working on a python3 script where I use timedelta() function and need to pass parameters (keyword arguments with values) to timedelta() dynamically.我正在使用 python3 脚本,我使用timedelta() function 并且需要将参数(关键字 arguments 与值)动态传递给timedelta()

I tried several things but I can't figure out how to do this.我尝试了几件事,但我无法弄清楚如何做到这一点。

from datetime import timedelta

timeDeltaArgKey = "minutes"
timeDeltaArgValue = 60


timedelta(timeDeltaArgKey=timeDeltaArgValue)
# TypeError: 'timeDeltaArgKey' is an invalid keyword argument for __new__()

timedelta("{}={}".format(timeDeltaArgKey, timeDeltaArgValue))
# TypeError: unsupported type for timedelta days component: str

I also tried to pass it in as an array:我还尝试将其作为数组传递:

timeDeltaKwarg = {"minutes": 60}

timedelta(timeDeltaKwarg)
# TypeError: unsupported type for timedelta days component: dict

Create a keyword arguments dictionary and pass it to timedelta :创建一个关键字 arguments 字典并将其传递给timedelta

from datetime import timedelta


timeDeltaArg1Key = "days"
timeDeltaArg1Value = 3
timeDeltaArg2Key = "minutes"
timeDeltaArg2Value = 60

kwargs = {timeDeltaArg1Key: timeDeltaArg1Value, timeDeltaArg2Key: timeDeltaArg2Value}

result = timedelta(**kwargs)
print(result)  # -> 3 days, 1:00:00

You need to unpack the dictionary to pass it:您需要解压缩字典才能传递它:

timeDeltaKwarg = {"minutes": 60}
timedelta(**timeDeltaKwarg)

Or you can simply pass it as normal parameter或者您可以简单地将其作为普通参数传递

timedelta(minutes=60)

You need to use timedelta as follows:您需要按如下方式使用 timedelta:

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM