首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的as.difftime中定义+/-符号?

如何在R中的as.difftime中定义+/-符号?
EN

Stack Overflow用户
提问于 2015-07-10 04:12:31
回答 1查看 169关注 0票数 7

我有表示时间偏移的字符串,这些字符串具有+-符号,例如:

string1 <- c("+00:30", "-07:00")

如何将这些转换为as.difftime格式?我知道,如果没有任何迹象,我可以只写as.difftime(string1, format = "%H:%M"),它会工作的。不过,我不知道如何处理这些标志。我希望使用得到的difftime将UTC时间转换为LST。

我感谢你的时间和帮助提前。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-10 08:20:34

使用as.difftimeformat = "%z"可以做到这一点,但是存在一些问题。首先,冒号不是时区说明符的有效部分。第二,输出似乎相对于当前时区。这里有一个函数可以绕过这些函数:

代码语言:javascript
复制
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的替代方法

代码语言:javascript
复制
tz_to_difftime2 <- function(x) {
  as.difftime(sapply(strsplit(x, ":"),
    function(x) as.numeric(x) %*% c(1, 1/60)),
    units = "hours")
}

如果你喜欢更多的东西(使用magtittr)

代码语言:javascript
复制
tz_to_difftime3 <- . %>%
  strsplit(":") %>%
  sapply(
    . %>%
    as.numeric %>%
    multiply_by_matrix(c(1, 1/60))
  ) %>%
  as.difftime(unit = "hours")

最后这两个人的优势是他们要花费多少个小时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31332317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档