【问题标题】:Convert 12 hour character time to 24 hour将 12 小时字符时间转换为 24 小时
【发布时间】:2015-04-23 20:19:48
【问题描述】:

我有一个字符格式的时间数据集。我试图将其从 12 小时格式转换为 24 小时格式。我进行了一些搜索,但我发现的所有内容似乎都假设字符已经采用 24 小时格式。这是我正在使用的时代的一个例子。

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")

【问题讨论】:

    标签: r


    【解决方案1】:

    这应该可行:

    times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
    
    strptime(times, "%I:%M %p")
    
    ## [1] "2015-04-23 09:06:00 EDT" "2015-04-23 16:42:00 EDT"
    ## [3] "2015-04-23 15:05:00 EDT" "2015-04-23 12:00:00 EDT"
    ## [5] "2015-04-23 03:38:00 EDT"
    

    如果你只想要时间:

    format(strptime(times, "%I:%M %p"), format="%H:%M:%S")
    ## [1] "09:06:00" "16:42:00" "15:05:00" "12:00:00" "03:38:00"
    

    【讨论】:

    • 这太好了,谢谢!我在搜索时确实找到了 strptime,但无法弄清楚如何排除日期,因为我已经在另一个变量中拥有它。 帽子提示
    【解决方案2】:
    times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
    print(as.POSIXct(times, format='%I:%M %p'))
    
    [1] "2015-04-23 09:06:00 CDT" "2015-04-23 16:42:00 CDT" "2015-04-23 15:05:00 CDT" "2015-04-23 12:00:00 CDT"
    [5] "2015-04-23 03:38:00 CDT"
    

    @Tyler - 你打字比我快。 To Topic Starter - 请查看 CDT 和 EDT 是如何根据您的时区自动填充的 - 在一天内 1 小时内转换时间时,这可能是一个问题

    【讨论】:

    • 我用了 2 个手指(我已经干净了),但我克服了,因为我的 .Rprofile 中有函数来注释(散列)和缩进 4 个空格,这可以在添加代码时节省时间。所以我作弊更好,而不是打字更快:-)
    • 您对 CDT/EDT/PDT 等有什么看法?
    • 感谢RE时区的警告!
    猜你喜欢
    • 2013-10-14
    • 2012-04-09
    • 2012-12-01
    • 2021-12-24
    • 1970-01-01
    • 2017-06-27
    • 2020-04-23
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多