una - Cómo convertir decimal a tiempo POSIX
convertir fracciones a decimales y viceversa (3)
Esto realmente depende de lo que quieras hacer con este "tiempo real" después de convertirlo, pero voy a operar asumiendo que solo quieres salida formateada de la función [suncalc] que estás utilizando para poder leerla.
Si solo desea mostrar la hora en formato de 24 horas / 12 horas como una cadena, puede agregar cualquiera de estos pares de líneas al final de su función [suncalc] justo antes de la declaración ''return'':
# Use these two lines for 24-hour format
sunrise <- format(as.POSIXct(sunrise*3600, origin="2001-01-01", "GMT"), "%H:%M")
sunset <- format(as.POSIXct(sunset*3600, origin="2001-01-01", "GMT"), "%H:%M")
# Use these two lines for 12-hour format (AM/PM)
sunrise <- format(as.POSIXct(sunrise*3600, origin="2001-01-01", "GMT"), "%I:%M %p")
sunset <- format(as.POSIXct(sunset*3600, origin="2001-01-01", "GMT"), "%I:%M %p")
Utilizo una función desde aquí para calcular el amanecer y el ocaso y me devuelve:
sunrise sunset
6.49055593325792 18.2873900837081
Estoy luchando (intentando con strftime
, POSIXct
o as.Date
) para convertirlo a tiempo real, pero hasta ahora sin éxito.
Como siempre, cualquier sugerencia es muy apreciada.
La estrategia de @ Arun funciona, pero podría ser más fácil simplemente hacer:
x <- c(6.49055593325792, 18.2873900837081)
today<-as.POSIXct(''2012-01-23 00:00:00 EST'')
today + (3600*x)
# "2012-01-23 06:29:26 EST" "2012-01-23 18:17:14 EST"
Eso te dará los segundos también.
Primero convierta la representación decimal en horas y minutos (si lo entiendo bien)
x <- c(6.49055593325792, 18.2873900837081)
# if 6.49 equals 6.49 hours, then do this.
x.m <- paste(floor(x), round((x-floor(x))*60), sep=":")
> x.m
# [1] "6:29" "18:17"
> strptime(x.m, format="%H:%M")
# [1] "2013-01-23 06:29:00" "2013-01-23 18:17:00"