2012-09-26 10 views
5

Tengo una tabla que contiene como entradas la Fecha, Waketime y Hora de acostarse. En base a estos datos, quiero calcular la duración del sueño de la noche anterior. A continuación puede ver un ejemplo de la tabla me gustaría obtener:¿Cómo puedo calcular la duración del sueño en una tabla de 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 | 

Cuando aplico la fórmula tabla: #+TBLFM: $4=if((24-$3)<12, (24-$3)[email protected]$2, [email protected]$2);t esto no da el resultado deseado, debido a los números enteros (24, 12 ...) interpretado como segundos.

resultado erróneo:

| 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 

¿Cómo puedo ajustar esta fórmula por lo que devuelve la duración correcta del sueño?

Observe que para calcular la duración del sueño, tengo una instrucción if que calcula la duración del sueño de manera diferente, según el valor de Hora de acostarse. Si la hora de dormir es antes de las 12 h, se agregan Bedtime y Waketime. Si la hora de acostarse es 12h pasado, 24 se resta por primera vez por hora de dormir y posteriormente añadió a Waketime

Respuesta

4

Es un truco, porque no parece org-mode para entender la notación HMS del calc al crear fórmulas, pero aquí son:

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