How can I make this lambda get a timestamp that doesn't include the T
in the timestamp?
@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)
eg timestamp:
2015-04-11T01:30:00
The datetime.isoformat()
function takes an argument: the separator to use. It defaults to 'T'
if omitted; if you want something else, then pass in that instead:
obj.isoformat(' ')
Quoting the documentation:
The optional argument sep (default
'T'
) is a one-character separator, placed between the date and time portions of the result.
You can also convert the object to a string here; datetime.__str__()
is basically the same thing as datetime.isoformat(' ')
.
Demo:
>>> 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'
Only the datetime.isoformat()
method takes that argument; date.isoformat()
does not; you'll have to adjust your default
handler to differentiate between date
and datetime
objects for this to work, or just use str()
on either:
dthandler = lambda obj: (
obj.isoformat(' ') if isinstance(obj, datetime.datetime)
else obj.isoformat() if isinstance(obj, datetime.date)
else None)
or
dthandler = lambda obj: (
str(obj) if isinstance(obj, (datetime.datetime, datetime.date))
else None)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With