我有一个表格,其中包含Date,Waketime和Bedtime作为输入。基于这些数据,我想计算前一天晚上的睡眠持续时间。您可以在下面看到我想要获得的表格示例:
| 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小时,则首先将Bedtime减去24并随后添加到Waketime
答案 0 :(得分:4)
这是一个hack,因为org-mode在创建公式时似乎不理解calc的HMS表示法,但在这里你是:
#+TBLFM: $4=if($3 - (12 * 3600) < 0, (24 * 3600), 0) + $2 - $3;T