many thanks to both of you. Yours was very interesting to read, Thomas, but ts makes it quite a bit easier to write:
(defun o-l-date-to-timestamp (date)
"use ts.el date parse functions return an ISO-compatible
timestamp for transmission to Canvas via API. DATE is a string,
usually of the form `2019-09-26`, but optionally including a full time."
(ts-format "%Y-%m-%dT%H:%M:%S%:z" (ts-parse-fill 'end date )))
I'm quite looking forward to using dash, s, ts, kv, etc to simplify my often very obtuse legacy code.