相关疑难解决方法(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中为3个字母tz指定POSIX(时间)格式,以便忽略它?

对于输出,规格是%Z(见?strptime).但是对于输入,这是如何工作的?

为了澄清,将时区缩写解析成有用的信息会很好as.POSIXct(),但更多的核心问题是如何让函数至少忽略时区.

这是我最好的解决方法,但是有一个特定的格式代码可以传递给as.POSIXct()所有时区吗?

times <- c("Fri Jul 03 00:15:00 EDT 2015", "Fri Jul 03 00:15:00 GMT 2015")
as.POSIXct(times, format="%a %b %d %H:%M:%S %Z %Y") # nope! strptime can't handle %Z in input

formats <- paste("%a %b %d %H:%M:%S", gsub(".+ ([A-Z]{3}) [0-9]{4}$", "\\1", times),"%Y")
as.POSIXct(times, format=formats) # works
Run Code Online (Sandbox Code Playgroud)

编辑:这是最后一行的输出,以及它的类(来自单独的调用); 输出符合预期.从控制台:

> as.POSIXct(times, format=formats)
[1] "2015-07-03 00:15:00 EDT" "2015-07-03 00:15:00 EDT"

> attributes(as.POSIXct(times, format=formats))
$class
[1] "POSIXct" "POSIXt" 

$tzone
[1] ""
Run Code Online (Sandbox Code Playgroud)

timezone posix r strptime

5
推荐指数
1
解决办法
483
查看次数

标签 统计

r ×2

datetime ×1

posix ×1

strptime ×1

timezone ×1