我有表示时间偏移的字符串,这些字符串具有+和-符号,例如:
string1 <- c("+00:30", "-07:00")
如何将这些转换为as.difftime格式?我知道,如果没有任何迹象,我可以只写as.difftime(string1, format = "%H:%M"),它会工作的。不过,我不知道如何处理这些标志。我希望使用得到的difftime将UTC时间转换为LST。
我感谢你的时间和帮助提前。
发布于 2015-07-10 08:20:34
使用as.difftime和format = "%z"可以做到这一点,但是存在一些问题。首先,冒号不是时区说明符的有效部分。第二,输出似乎相对于当前时区。这里有一个函数可以绕过这些函数:
tz_to_difftime <- function(x, zero = "+0000") {
out <- as.difftime(c(zero, gsub("[: ]", "", x)),
format = "%z")
out[1] - out[-1]
}
tz_to_difftime("+05:30")请注意,在当前R中,这只适用于长达14小时的差异(在旧版本中更少)。
这里有一个使用strsplit的替代方法
tz_to_difftime2 <- function(x) {
as.difftime(sapply(strsplit(x, ":"),
function(x) as.numeric(x) %*% c(1, 1/60)),
units = "hours")
}如果你喜欢更多的东西(使用magtittr)
tz_to_difftime3 <- . %>%
strsplit(":") %>%
sapply(
. %>%
as.numeric %>%
multiply_by_matrix(c(1, 1/60))
) %>%
as.difftime(unit = "hours")最后这两个人的优势是他们要花费多少个小时。
https://stackoverflow.com/questions/31332317
复制相似问题