Function: org-odt--format-timestamp
org-odt--format-timestamp is a byte-compiled function defined in
ox-odt.el.gz.
Signature
(org-odt--format-timestamp TIMESTAMP &optional END ISO-DATE-P)
Source Code
;; Defined in /usr/src/emacs/lisp/org/ox-odt.el.gz
;;; Internal functions
;;;; Date
(defun org-odt--format-timestamp (timestamp &optional end iso-date-p)
(let* ((format-timestamp
(lambda (timestamp format &optional end utc)
(if timestamp
(org-format-timestamp timestamp format end utc)
(format-time-string format nil utc))))
(has-time-p (or (not timestamp)
(org-timestamp-has-time-p timestamp)))
(iso-date (let ((format (if has-time-p "%Y-%m-%dT%H:%M:%S"
"%Y-%m-%d")))
(funcall format-timestamp timestamp format end))))
(if iso-date-p iso-date
(let* ((style (if has-time-p "OrgDate2" "OrgDate1"))
;; LibreOffice does not care about end goes as content
;; within the "<text:date>...</text:date>" field. The
;; displayed date is automagically corrected to match the
;; format requested by "style:data-style-name" attribute. So
;; don't bother about formatting the date contents to be
;; compatible with "OrgDate1" and "OrgDateTime" styles. A
;; simple Org-style date should suffice.
(date (let ((format (org-time-stamp-format
has-time-p 'no-brackets 'custom)))
(funcall format-timestamp timestamp format end)))
(repeater (let ((repeater-type (org-element-property
:repeater-type timestamp))
(repeater-value (org-element-property
:repeater-value timestamp))
(repeater-unit (org-element-property
:repeater-unit timestamp)))
(concat
(cl-case repeater-type
(catchup "++") (restart ".+") (cumulate "+"))
(when repeater-value
(number-to-string repeater-value))
(cl-case repeater-unit
(hour "h") (day "d") (week "w") (month "m")
(year "y"))))))
(concat
(format "<text:date text:date-value=\"%s\" style:data-style-name=\"%s\" text:fixed=\"true\">%s</text:date>"
iso-date style date)
(and (not (string= repeater "")) " ")
repeater)))))