emacs组织模式:如何从HMS(小时-分-秒)值中提取总秒数“;
如果组织表格单元格包含HMSemacs组织模式:如何从HMS(小时-分-秒)值中提取总秒数“;,emacs,org-mode,Emacs,Org Mode,如果组织表格单元格包含HMS1@11'37” 有没有一种简单的方法来计算总(时间)秒数 (1*3600+11*60+37=4297)试试这个: (defun hms-to-seconds (str) (let* ((lst (split-string str "@ ")) (hour (car lst)) (lst2 (split-string (cadr lst) "' ")) (minute (car lst2)) (second (car (sp
1@11'37”
有没有一种简单的方法来计算总(时间)秒数
(1*3600+11*60+37=4297)试试这个:
(defun hms-to-seconds (str)
(let* ((lst (split-string str "@ "))
(hour (car lst))
(lst2 (split-string (cadr lst) "' "))
(minute (car lst2))
(second (car (split-string (cadr lst2) "\""))))
(+ (* (string-to-number hour) 3600)
(* (string-to-number minute) 60)
(string-to-number second))))
Upd:正如@Juancho所指出的,直接hms计算有更简单的方法:
| 1@ 11' 37" | 4297 | 4297 |
#+TBLFM: $2='(fmt-to-seconds $1)::$3=$1\ 0@ 0' 1"
试试这个:
(defun hms-to-seconds (str)
(let* ((lst (split-string str "@ "))
(hour (car lst))
(lst2 (split-string (cadr lst) "' "))
(minute (car lst2))
(second (car (split-string (cadr lst2) "\""))))
(+ (* (string-to-number hour) 3600)
(* (string-to-number minute) 60)
(string-to-number second))))
Upd:正如@Juancho所指出的,直接hms计算有更简单的方法:
| 1@ 11' 37" | 4297 | 4297 |
#+TBLFM: $2='(fmt-to-seconds $1)::$3=$1\ 0@ 0' 1"
作为参考,邮件列表中有一个使用Emacs Calc的时间处理函数来处理相同的问题。作为参考,邮件列表中有一个使用Emacs Calc的时间处理函数来处理相同的问题。#+TBLFM:$8=3600度($4);%d将除法缩短1秒可以缩短为#+TBLFM:$3=$1\1“#+TBLFM:$8=3600度($4); %d除以1秒可缩短为#+TBLFM:$3=$1\1“