【问题标题】:R convert time format 130800Z - Day, Hour, MinR 转换时间格式 130800Z - Day, Hour, Min
【发布时间】:2017-10-13 09:02:42
【问题描述】:

我正在调用一个以130800Z 格式返回时间的api,它代表天、小时和分钟。我想知道是否有一种简单的方法来转换它?

我的方法是将字符串拆分 Sys.Date 以获得月份和年份,然后将 130800Z 每 2 个字符拆分一次,并将所有结果合并到 2017-10-13 08:00:00

只是想知道是否有一种方法可以使用striptime(sprintf(... 而无需拆分任何内容?

【问题讨论】:

  • 130800Z 中,是一年中的哪一天?
  • 没有日期,因此使用Sys.date 获取其他数据 - api 每小时更新一次,因此不会出现月份/年份错误
  • 月、时、分 (UTC)

标签: r datetime time


【解决方案1】:

试试这个:

strptime(x = time,format = "%d%H%M",tz = "GMT")
#[1] "2017-10-13 08:00:00 GMT"

【讨论】:

  • 比我想象的还要简单哈哈
【解决方案2】:

我这样做了,但不得不使用拆分

time = "130950Z"

day = substring(time, seq(1,nchar(time),2), seq(2,nchar(time),2))[1]
hour = substring(time, seq(1,nchar(time),2), seq(2,nchar(time),2))[2]
min = substring(time, seq(1,nchar(time),2), seq(2,nchar(time),2))[3]
year = unlist(str_split(Sys.Date(), "-"))[1]
month = unlist(str_split(Sys.Date(), "-"))[2]

dt = strptime(sprintf("%s-%s-%s %s:%s:%s", year, month, day, hour, min, 0), "%Y-%m-%d %H:%M:%S")

dt = "2017-10-13 09:50:00 GMT"

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2019-09-22
    相关资源
    最近更新 更多