我正在尝试格式化Flask应用程序中使用datetime.datetime.utcnow()
生成的日期(使用这个,因为它相当于我的应用程序使用的数据库MongoDB中的ISODate()
),但是Jinja2不会呈现它们。
我的应用程序中有以下功能:
def format_isodate(timestamp):
"""Format a ISODate time stamp for display."""
date = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S.%f")
return date.strftime('%Y-%m-%d @ %H:%M:%S')
日期如下:
"2013-07-04 20:06:05.088000"
我有以下过滤器:
app.jinja_env.filters['isodateformat'] = format_isodate
但当我试图在模板中格式化时间戳时:
{{ change.submit_date|isodateformat }}
我得到这个错误:
"TypeError: must be string, not datetime.datetime"
我不明白为什么我会犯这个错误。strftime()
不将日期转换为字符串吗?
问题是
utcnow()
返回的是datetime.datetime
对象,而不是字符串。如果检查异常中的行号,则可能失败的strptime
调用可以将字符串解析为日期,但无法解析日期。示例:
字符串的第一次打印成功,但第二次打印失败,
TypeError: must be string, not datetime.datetime
。相关问题 更多 >
编程相关推荐