【问题标题】:Converting UTC Time to Local Time with Days of Week and Date Included将 UTC 时间转换为本地时间,包括星期几和日期
【发布时间】:2018-03-17 19:58:29
【问题描述】:

我将以下 2 列作为较大数据框的一部分。 Timezone_Offset 是当地时间的小时差(我正在查看的数据中的美国西海岸)。换句话说,UTC + 偏移量 = 本地时间。

我希望将 UTC 时间转换为本地时间,同时在必要时正确更改星期几和日期。例如,这里是两列的前 5 行。

                           UTC              Timezone_Offset
Sun Apr 08 02:42:03 +0000 2012                           -7
Sun Jul 01 03:27:20 +0000 2012                           -7
Wed Jul 11 04:40:18 +0000 2012                           -7
Sat Nov 17 01:31:36 +0000 2012                           -8
Sun Apr 08 20:50:30 +0000 2012                           -7

如果还必须更改星期几和日期,事情就会变得棘手。例如,查看第一行,当地时间应该是 Sat Apr 07 19:42:03 +0000 2012。在第二行中,月份也必须更改。

抱歉,我对 R 很陌生。有人能解释一下如何做到这一点吗?非常感谢您。

【问题讨论】:

    标签: r time utc strptime zone


    【解决方案1】:

    解析为 UTC,然后以秒为单位应用偏移量,即乘以 60*60:

    data <- read.csv(text="UTC,       Timezone_Offset
    Sun Apr 08 02:42:03 +0000 2012,                    -7
    Sun Jul 01 03:27:20 +0000 2012,                    -7
    Wed Jul 11 04:40:18 +0000 2012,                    -7
    Sat Nov 17 01:31:36 +0000 2012,                    -8
    Sun Apr 08 20:50:30 +0000 2012,                    -7", stringsAsFactors=FALSE)
    
    data$pt <- as.POSIXct(strptime(data$UTC, "%a %b %d %H:%M:%S %z %Y", tz="UTC"))
    
    data$local <- data$pt + data$Timezone_Offset*60*60
    

    结果:

    > data[,3:4]
                       pt               local
    1 2012-04-08 02:42:03 2012-04-07 19:42:03
    2 2012-07-01 03:27:20 2012-06-30 20:27:20
    3 2012-07-11 04:40:18 2012-07-10 21:40:18
    4 2012-11-17 01:31:36 2012-11-16 17:31:36
    5 2012-04-08 20:50:30 2012-04-08 13:50:30
    > 
    

    【讨论】:

    • 非常感谢您的帮助,德克。非常感谢。
    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多