R 如何将十进制转换为POSIX时间

R 如何将十进制转换为POSIX时间,r,time,decimal,R,Time,Decimal,我使用一个函数来计算日出和日落,它返回: sunrise sunset 6.49055593325792 18.2873900837081 我正在努力(尝试使用strftime、POSIXct或as.Date函数)将其转换为实时,但迄今为止没有成功 一如既往,我们非常感谢您的任何建议。首先将十进制表示法转换为小时和分钟(如果我理解正确的话) x strtime(x.m,格式=“%H:%m”) # [1] "2013-01-23 06:29:00" "201

我使用一个函数来计算日出和日落,它返回:

         sunrise           sunset
6.49055593325792 18.2873900837081
我正在努力(尝试使用
strftime
POSIXct
as.Date
函数)将其转换为实时,但迄今为止没有成功


一如既往,我们非常感谢您的任何建议。

首先将十进制表示法转换为小时和分钟(如果我理解正确的话)

x strtime(x.m,格式=“%H:%m”)
# [1] "2013-01-23 06:29:00" "2013-01-23 18:17:00"

@Arun的策略行之有效,但可能更容易做到:

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"

x这实际上取决于转换后您想对这个“实时”做什么,但我将假设您只想从[suncalc]函数中获得格式化输出,以提高可读性

如果您只想将时间以24小时/12小时格式显示为字符串,则可以在[suncalc]函数的末尾“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")
#将这两行用于24小时格式

日出6.490555593325792 18.2873900837081的确切含义是什么?小数点后的数字代表什么?你试过什么?你到底是怎么被困住的?我打赌已经过了午夜。我敢打赌,作者的意思不是变量类型中的
real
,而是真正的人类如何读取时间。大家好,我尝试了所有的解决方案,都很好!!!然而,Nograps提出的快速、简单和简单的解决方案给我留下了深刻的印象!我非常感谢所有的帮助者!!!Stef@stefano如果您喜欢,请单击答案旁边的复选框。@stefano我认为Nograps指的是您没有通过单击StackOverflow上的复选框为您的问题选择“最佳答案”,因此他没有因为选择了答案而获得学分。
# 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")