Function: org-duration-to-minutes

org-duration-to-minutes is an autoloaded and byte-compiled function defined in org-duration.el.gz.

Signature

(org-duration-to-minutes DURATION &optional CANONICAL)

Documentation

Return number of minutes of DURATION string.

When optional argument CANONICAL is non-nil, ignore org-duration-units and use standard time units value.

A bare number is translated into minutes. The empty string is translated into 0.0.

Return value as a float. Raise an error if duration format is not recognized.

Aliases

org-duration-string-to-minutes (obsolete since 9.1) org-hh:mm-string-to-minutes (obsolete since 9.1)

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-duration.el.gz
;;;###autoload
(defun org-duration-to-minutes (duration &optional canonical)
  "Return number of minutes of DURATION string.

When optional argument CANONICAL is non-nil, ignore
`org-duration-units' and use standard time units value.

A bare number is translated into minutes.  The empty string is
translated into 0.0.

Return value as a float.  Raise an error if duration format is
not recognized."
  (cond
   ((equal duration "") 0.0)
   ((numberp duration) (float duration))
   ((string-match-p org-duration--h:mm-re duration)
    (pcase-let ((`(,hours ,minutes ,seconds)
		 (mapcar #'string-to-number (split-string duration ":"))))
      (+ (/ (or seconds 0) 60.0) minutes (* 60 hours))))
   ((string-match-p org-duration--full-re duration)
    (let ((minutes 0)
	  (s 0))
      (while (string-match org-duration--unit-re duration s)
	(setq s (match-end 0))
	(let ((value (string-to-number (match-string 1 duration)))
	      (unit (match-string 2 duration)))
	  (cl-incf minutes (* value (org-duration--modifier unit canonical)))))
      (float minutes)))
   ((string-match org-duration--mixed-re duration)
    (let ((units-part (match-string 1 duration))
	  (hms-part (match-string 2 duration)))
      (+ (org-duration-to-minutes units-part)
	 (org-duration-to-minutes hms-part))))
   ((string-match-p "\\`[0-9]+\\(\\.[0-9]*\\)?\\'" duration)
    (float (string-to-number duration)))
   (t (error "Invalid duration format: %S" duration))))