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ステートメントがあることに注意してください。就寝時刻が12時間前の場合、就寝時刻と起床時刻が追加されます。就寝時刻が12時間を過ぎている場合、24は最初に就寝時刻から差し引かれ、その後ウェイクタイムに加算されます

4

1 に答える 1

4

org-modeは数式を作成するときにcalcのHMS表記を理解していないように見えるため、これはハックですが、次のようになります。

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