将 UTC 时间转换为包含星期几和日期的本地时间
Converting UTC Time to Local Time with Days of Week and Date Included
我有以下 2 列作为更大数据框的一部分。 Timezone_Offset 是当地时间的小时差(我正在查看的数据是美国西海岸)。换句话说,UTC + Offset = Local Time。
我希望将 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 的新手。有人可以解释一下如何做到这一点吗?非常感谢您。
解析为 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
>
我有以下 2 列作为更大数据框的一部分。 Timezone_Offset 是当地时间的小时差(我正在查看的数据是美国西海岸)。换句话说,UTC + Offset = Local Time。
我希望将 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 的新手。有人可以解释一下如何做到这一点吗?非常感谢您。
解析为 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
>