el_*_*_le 3 python datetime json
如何让这个lambda获得一个不包含T时间戳的时间戳?
@app.route("/bookings", methods=['GET'])
def bookings():
bookings = Booking.query.all()
dictList = []
for b in bookings:
dictList.append(b.as_dict())
dthandler = lambda obj: (
obj.isoformat()
if isinstance(obj, datetime.datetime)
or isinstance(obj, datetime.date)
else None)
return json.dumps(dictList, default=dthandler)
Run Code Online (Sandbox Code Playgroud)
例如时间戳:
2015-04-11T01:30:00
Run Code Online (Sandbox Code Playgroud)
该datetime.isoformat()函数接受一个参数:要使用的分隔符.'T'如果省略则默认为; 如果你想要别的东西,那么转而通过:
obj.isoformat(' ')
Run Code Online (Sandbox Code Playgroud)
引用文档:
可选参数sep(默认值
'T')是一个单字符分隔符,位于结果的日期和时间部分之间.
您也可以在此处将对象转换为字符串; datetime.__str__()与...基本相同datetime.isoformat(' ').
演示:
>>> from datetime import datetime
>>> obj = datetime(2015, 4, 21, 20, 0, 0)
>>> obj.isoformat()
'2015-04-21T20:00:00'
>>> obj.isoformat(' ')
'2015-04-21 20:00:00'
Run Code Online (Sandbox Code Playgroud)
只有datetime.isoformat()方法才能使用该参数; date.isoformat()才不是; 你必须调整你的default处理程序来区分date和datetime对象以使其工作,或者只是使用str():
dthandler = lambda obj: (
obj.isoformat(' ') if isinstance(obj, datetime.datetime)
else obj.isoformat() if isinstance(obj, datetime.date)
else None)
Run Code Online (Sandbox Code Playgroud)
要么
dthandler = lambda obj: (
str(obj) if isinstance(obj, (datetime.datetime, datetime.date))
else None)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |