emacs组织模式:如何从HMS(小时-分-秒)值中提取总秒数“;

emacs组织模式:如何从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

如果组织表格单元格包含HMS
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“