如何转换十进制到POSIX时间(How convert decimal to POSIX time)

2019-07-18 14:04发布

我用一个函数从这里来计算日出和日落,并返回:

         sunrise           sunset
6.49055593325792 18.2873900837081

我很努力(与努力strftimePOSIXctas.Date功能),将其转换为实时,但至今没有成功。

与往常一样,任何的建议是不胜感激。

Answer 1:

@阿朗的战略工作,但只是做可能更容易:

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"

这将让你秒为好。



Answer 2:

首先十进制表示转换为小时和分钟(如果我的理解对不对)

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"


Answer 3:

这真的取决于你想用它转换后这种“实时”做什么,但我要对你只是想从您使用的可读性[suncalc]功能格式化输出而动作。

如果你只是想显示在24小时/ 12小时格式字符串的时候,你可以只在“return”语句之前添加这两种对线到您的[suncalc]函数的末尾:

# 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")


文章来源: How convert decimal to POSIX time
标签: r time decimal