5

我有一个表格,其中包含日期、唤醒时间和就寝时间作为输入。根据这些数据,我想计算前一天晚上的睡眠时间。您可以在下面看到我想获得的表格示例:

| Date             | Waketime | Bedtime | Sleep |
| <2012-09-24 Mon> |     6:00 |   22:00 |       |
| <2012-09-25 Tue> |     8:00 |   01:00 | 10:00 |
| <2012-09-26 Wed> |     7:00 |   23:00 |  6:00 |

当我应用表格公式时:#+TBLFM: $4=if((24-$3)<12, (24-$3)+@-1$2, $3+@-1$2);t这并没有给出想要的结果,因为整数 (24, 12...) 被解释为秒。

错误结果:

| Date             | Waketime | Bedtime |  Sleep |
| <2012-09-24 Mon> |     6:00 |   22:00 |        |
| <2012-09-25 Tue> |     8:00 |   01:00 |   5.01 |
| <2012-09-26 Wed> |     7:00 |   23:00 | -14.99 |

   #+TBLFM: $4=if((24-$3)<12, (24-$3)+@-1$2, $3+@-1$2);t

如何调整此公式以返回正确的睡眠时间?

请注意,对于计算睡眠持续时间,我有一个 if 语句,它根据 Bedtime 的值以不同的方式计算睡眠持续时间。如果就寝时间在 12 小时之前,则添加就寝时间和起床时间。如果就寝时间超过 12 小时,则首先将就寝时间减去 24,然后将其添加到唤醒时间

4

1 回答 1

4

这是一个 hack,因为 org-mode 在创建公式时似乎不理解 calc 的 HMS 表示法,但你在这里:

   #+TBLFM: $4=if($3 - (12 * 3600) < 0, (24 * 3600), 0) + $2 - $3;T
于 2012-09-27T06:24:28.623 回答