相关疑难解决方法(0)

更改POSIXct对象中的时区

在R.中使用dateTimes和timezone可能会很棘手.这是我的问题:我想更改POSIXct对象的时区

R) data <- data.frame(x=c(1,2),dateTime=as.POSIXct(c("2010-03-11 03:30:00.432","2010-03-15 03:30:00.432"),format="%Y-%m-%d %H:%M:%S",tz="America/Montreal"))
R) data
  x            dateTime
1 1 2010-03-11 03:30:00
2 2 2010-03-15 03:30:00
R) str(data)
'data.frame':   2 obs. of  2 variables:
 $ x       : num  1 2
 $ dateTime: POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
Run Code Online (Sandbox Code Playgroud)

但如果我想改变时区,我唯一发现的是:

R) data$dateTime2 = format(data$dateTime,tz="Europe/Paris")
R) str(data)
'data.frame':   2 obs. of  3 variables:
 $ x        : num  1 2
 $ dateTime : POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
 $ dateTime2: chr  "2010-03-11 09:30:00" "2010-03-15 08:30:00"
Run Code Online (Sandbox Code Playgroud)

要么 …

datetime r

40
推荐指数
2
解决办法
3万
查看次数

R中的字符POSIXct转换在夏令时转换(CEST/CET)时导致错误的时区值

我在将POSIXct转换为字符并返回到R中的POSIXct时遇到问题.我运行以下代码:

time_seq_01 <- seq(as.POSIXct("2012-10-28 02:00:00"), by = 900, length.out = 10)
time_seq_02 <- as.character(time_seq_01)
time_seq_03 <- as.POSIXct(time_seq_02)
Run Code Online (Sandbox Code Playgroud)

或同等学历:

time_seq_01 <- seq(as.POSIXct("2012-10-28 02:00:00"), by = 900, length.out = 10)
time_seq_02 <- format(time_seq_01,usetz = TRUE)
time_seq_03 <- as.POSIXct(time_seq_02)
Run Code Online (Sandbox Code Playgroud)

这是2012年从中欧夏令时(CEST)中欧时间(CET)的夏令时转换(10月02:00 - 03:00的最后一个星期日)的时间戳.

当我把这些元素称为时,我得到了

time_seq_01
[1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST"
[3] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CEST"
[5] "2012-10-28 02:00:00 CET"  "2012-10-28 02:15:00 CET" 
[7] "2012-10-28 02:30:00 CET"  "2012-10-28 02:45:00 CET" 
[9] "2012-10-28 03:00:00 CET"  "2012-10-28 …
Run Code Online (Sandbox Code Playgroud)

r posixct

17
推荐指数
1
解决办法
6401
查看次数

使用'POSIXct'对象转换ISO 8601日期/时间时出错

有些事情我不明白.我只是尝试转换其他时区的日期.日期采用8601-ISO格式.我跟着这个.

pb.txt <- "2012-09-11T21:23:20Z"
pb.date <- as.POSIXct(pb.txt, tz="UTC")
format(pb.date, tz="WEST",usetz=TRUE)
[1] "2012-09-11 WEST"
Run Code Online (Sandbox Code Playgroud)

为什么只显示日期而不再是时间戳?我也尝试过:

pb.date <- as.POSIXct(pb.txt, origin=ISOdatetime(2012,09,11,21,23,20))
format(pb.date, tz="WEST",usetz=TRUE)
[1] "2012-09-10 22:00:00 WEST
Run Code Online (Sandbox Code Playgroud)

它更好,但时间戳是四舍五入的.如何完美转换8601-ISO日期时间?

r

3
推荐指数
1
解决办法
2925
查看次数

标签 统计

r ×3

datetime ×1

posixct ×1