2012-09-26 5 views
5

Ho una tabella contenente come input Data, Waketime e Ora di andare a dormire. Sulla base di questi dati voglio calcolare la durata del sonno della notte prima. Qui di seguito potete vedere un esempio di tabella vorrei ottenere:Come posso calcolare la durata del sonno in una tabella emacs?

| 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 | 

Quando applico la formula tavolo: #+TBLFM: $4=if((24-$3)<12, (24-$3)[email protected]$2, [email protected]$2);t questo non dà il risultato voluto, a causa dei numeri interi (24, 12 ...) interpretato come secondi.

risultato sbagliato:

| 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)[email protected]$2, [email protected]$2);t 

Come posso cambiare questa formula in modo che restituisce la durata del sonno è corretto?

Si noti che per calcolare la durata del sonno, ho un'istruzione if che calcola la durata del sonno in modo diverso, a seconda del valore di Bedtime. Se l'ora di andare a letto è prima delle 12, vengono aggiunti Bedtime e Waketime. Se andare a dormire è 12h passato, 24 è prima sottratto dal Bedtime e successivamente aggiunti Waketime

risposta

4

E 'un hack, perché org-mode non sembra capire la notazione HMS del calc durante la creazione di formule, ma qui si sono:

#+TBLFM: $4=if($3 - (12 * 3600) < 0, (24 * 3600), 0) + $2 - $3;T