webutil: add parse_iso8601()