python 3.6-带日期时间功能的fstring内部变量

时间:2018-07-14 12:35:06

标签: python python-3.x datetime integer f-string

我正在尝试循环运行以下代码行,并希望将timedelta定义为变量,因为它会不断变化。

START_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 00:00}" % COUNT
END_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 23:59}" % COUNT

但是,这失败并显示以下错误:

ValueError: invalid literal for int() with base 10: '%d'

我试图获取过去几天的开始时间和结束时间,并对此采取一些措施。我也尝试了其他几种方法,但是没有用。

1 个答案:

答案 0 :(得分:1)

之所以会这样,是因为在进行printf样式替换({}之前执行了字符串格式化(解决string % object中的表达式)。

尽管似乎可读性较差,但最好重新排列代码-先计算START_TIMEEND_TIME,然后将所有内容转换为字符串。

如果需要将它们分别放在一行中,则也可以使用方括号并显式调用string.format()方法以确保最后完成。以下非常通用的示例将起作用:

("{%d}" % 0).format('Hello')
输出:
Hello

但是,鉴于您的示例,这仍然不太可读。