这应该很快 - 我们在R中解析以下格式:
2013-04-05T07:49:54-07:00
我目前的方法是
require(stringr)
timenoT <- str_replace_all("2013-04-05T07:49:54-07:00", "T", " ")
timep <- strptime(timenoT, "%Y-%m-%d %H:%M:%S%z", tz="UTC")
但它提供了NA
。
答案 0 :(得分:14)
%z
是以小时为单位的签名偏移量,格式为hhmm
,而不是hh:mm
。这是删除最后一个:
的一种方法。
newstring <- gsub("(.*).(..)$","\\1\\2","2013-04-05T07:49:54-07:00")
(timep <- strptime(newstring, "%Y-%m-%dT%H:%M:%S%z", tz="UTC"))
# [1] "2013-04-05 14:49:54 UTC"
另请注意,您不必删除"T"
。
答案 1 :(得分:1)
你没有替换字符串。
NA只是意味着整体不起作用,所以要构建你的表达方式:
R> strptime("2013-04-05T07:49:54-07:00", "%Y-%m-%d")
[1] "2013-04-05"
R> strptime("2013-04-05T07:49:54-07:00", "%Y-%m-%dT%H:%M")
[1] "2013-04-05 07:49:00"
R> strptime("2013-04-05T07:49:54-07:00", "%Y-%m-%dT%H:%M:%S")
[1] "2013-04-05 07:49:54"
R>
另外,由于我从未完全理解的原因 - 但可能存在于其下面的C库函数,%z
仅适用于输出,而不适用于输入。因此,您的NA很可能来自您使用%z
。
答案 2 :(得分:-1)
strptime("2013-04-05 07:49:54-07:00", "%Y-%m-%d %H:%M:%S", tz="UTC")
提供2013-04-05 07:49:54 UTC
尝试
timep <- strptime(timenoT, "%Y-%m-%d %H:%M:%S", tz="UTC")