组织时钟表报告的时间格式

Time formatting for org clocktable report

我使用 org-clock table 来跟踪时间。以小时为单位查看时间比以天为单位更方便。我如何配置 org clocktable 来做到这一点?

这是我现在得到的:

* A
  :LOGBOOK:
  CLOCK: [2020-05-08 Fri 10:37]--[2020-05-08 Fri 23:37] => 13:00
  CLOCK: [2020-05-07 Thu 13:37]--[2020-05-07 Thu 23:37] => 10:00
  :END:
* D
  :LOGBOOK:
  CLOCK: [2020-05-08 Fri 03:37]--[2020-05-08 Fri 05:37] =>  2:00
  CLOCK: [2020-05-06 Thu 03:37]--[2020-05-06 Thu 05:37] =>  2:00
  :END:


#+BEGIN: clocktable :scope file :maxlevel 2
#+CAPTION: Clock summary at [2020-05-08 Fri 19:40]
| Headline     |      Time |
|--------------+-----------|
| *Total time* | *1d 3:00* |
|--------------+-----------|
| A            |     23:00 |
| D            |      4:00 |
#+END:

注意 "Total time" 是“1d 3:00”。我希望总时间显示为 27:00.

时间格式由变量 org-duration-format 控制,变量 org-duration-format 的描述很长 (C-h v org-duration-format RET)。我在这里选择性地引用:

The value can be set to, respectively, the symbols ‘h:mm:ss’ or ‘h:mm’, which means a duration is expressed as, respectively, a "H:MM:SS" or "H:MM" string.

因此将此添加到文件中:

#+begin_src emacs-lisp
(setq org-duration-format 'h:mm)
#+end_src

并使用 C-c C-c 对其进行评估将使时钟表看起来像这样:

#+BEGIN: clocktable :scope file :maxlevel 2
#+CAPTION: Clock summary at [2020-05-11 Mon 22:10]
| Headline     |    Time |
|--------------+---------|
| *Total time* | *27:00* |
|--------------+---------|
| A            |   23:00 |
| D            |    4:00 |
#+END:

如果你想避免代码,你当然也可以自定义变量。

另外,如果不喜欢星号,可以自定义变量org-clock-total-time-cell-format,默认值为字符串*%s*.