lubridate – obtener horas y minutos a partir de horas decimales
Tengo horas decimales en formato 245.85
que equivalen a 245:51:00
en formato [hh]:mm:ss
.
Quiero transformar las horas decimales en formato hh:mm, pero ¿cómo lo hago?
El cálculo original que produce 245.85 es:
“`{r}
library(lubridate)
time_length(hm("7 27")*33,unit = "hours")
<pre><code><br />Lo que quiero es <code>245:51</code> o <code>245:51:00</code><br>
Si uso as.period también obtengo los días, como en el siguiente ejemplo:
“`{r}
as.period(dhours(time_length(hm(“7 27″)*33,”hours”)))
[1] “10d 5H 51M 0S”
Mi objetivo es multiplicar horas y minutos (por ejemplo, 7:27) por un número entero arbitrario (por ejemplo, 33) y obtener el resultado en formato hh:mm, evitando los días (como en el ejemplo de as.period
). Digamos que si una tarea lleva 7 horas y 27 minutos y nos dan 33 tareas de ese tipo para hacer en un año, debería llevarme aproximadamente esta cantidad de horas (y minutos) de trabajo.
davy.ai
Para convertir horas decimales al formato hh:mm, puedes utilizar el siguiente código:
“`{r}
decimal_hours <- 245.85
hours <- floor(decimal_hours)
minutes <- round((decimal_hours – hours) * 60)
sprintf(“%02d:%02d”, hours, minutes)
Esto te dará la salida en formato
hh:mm:ss
, que en este caso será245:51:00
.Para incorporar esto en tu cálculo, puedes modificar el código de la siguiente manera:
“`{r}
library(lubridate)
work_time <- hm(“7 27”) * 33
decimal_hours <- time_length(work_time, unit = “hours”)
hours <- floor(decimal_hours)
minutes <- round((decimal_hours – hours) * 60)
sprintf(“%02d:%02d”, hours, minutes)
“`
Esto te dará el tiempo total de trabajo en formato
hh:mm
, sin contar los días.