Hi Martin, Martin Halder <martin.hal...@gmail.com> writes:
> this is fantastic, already love lisp, thanks a lot.. now I have exactly > what I wanted.. additionally I needed the time format in industrial mode > (1h = 100m = 100s), implemented in ihms. thanks for these functions -- I allowed myself to add them to Worg/org-hacks.html, in a new "Times computation" section: http://orgmode.org/worg/org-hacks.html I added these functions I myself wrote for a particular purpose: #+begin_src emacs-lisp (defun org-hh:mm:ss-string-to-seconds (s) "Convert a string HH:MM:SS to a number of seconds." (when (string-match "\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\)" s) (let ((hour (string-to-number (match-string 1 s))) (min (string-to-number (match-string 2 s))) (sec (string-to-number (match-string 3 s)))) (+ (* hour 3600) (* min 60) sec)))) (defun org-subtract-hh:mm:ss-time (t1 t2) "Substract two hh:mm:ss time values." (let* ((sec (- (org-hh:mm:ss-string-to-seconds t2) (org-hh:mm:ss-string-to-seconds t1))) (hour (floor (/ sec 3600))) (min (floor (/ (- sec (* 3600 hour)) 60))) (secs (round (- sec (* 3600 hour) (* 60 min))))) (format "%.2d:%.2d:%.2d" hour min secs))) #+end_src With these function, you can subtract durations in a table like this: | Part | Begin | End | Duration | |-------+----------+----------+----------| | One | 00:00:00 | 00:01:11 | 00:01:11 | | Two | 00:01:12 | 00:02:00 | 00:00:48 | | Three | 00:02:05 | 00:16:06 | 00:14:01 | #+TBLFM: $4='(org-subtract-hh:mm:ss-time $2 $3) Which was useful for me when I had to derush video files. HTH, -- Bastien