我将一些JSON数据读入R,并将日期时间信息存储为单独的时间组件(年,月,小时等)。鉴于我已经有了单独的部分,看起来应该很容易创建一个POSIXlt对象,因为后者只是一个时间组件列表。
as.POSIXlt不接受命名列表或组件向量。可以通过将适当的类和attr添加到列表来创建POSIXlt,但是如果没有wday和yday元素,它就会失败,这是我没有的。
我知道我可以将列表转换为字符串并对其进行解析,但这种解决方案非常优雅,我认为我确保没有更好的方法。
编辑:ISOdatetime正是我想要的。谢谢!
答案 0 :(得分:1)
ISOdate是要使用的命令:
ISOdate(year, month, day, hour = 12, min = 0, sec = 0, tz = "GMT")
该函数返回POSIXct类型。有关详细信息,请参阅?ISOdate。
答案 1 :(得分:0)
ISOdate或ISOdatetime函数显然是可以使用的,但是因为你问过如何用POSIXlt作为起点,这里有点黑客攻击:
test <- as.POSIXlt("1970-01-01")
dput(test)
structure(list(sec = 0, min = 0L, hour = 0L, mday = 1L, mon = 0L,
year = 70L, wday = 4L, yday = 0L, isdst = 0L, zone = "PST",
gmtoff = NA_integer_), .Names = c("sec", "min", "hour", "mday",
"mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt",
"POSIXt"))
test$year <- 1941
test$mon <- 12
test$mday <-7
test
#[1] "3842-01-07 PST" Wrong offset
test$year <- 41
test
#[1] "1942-01-07 PST" "An infamous date"
我怀疑这是“错误的”。因为我怀疑一周中的某一天或其他列表项目得到适当的重新调整。