在R中将本地日期时间转换为UTC

15
我如何将以下格式的本地 DateTime "12/31/2014 6:42:52 PM" 转换为 UTC 时间?在 R 中我尝试了以下代码:as.POSIXct(as.Date("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S"),tz="UTC"),但似乎无效。

2
你尝试过使用 strptime("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S",tz="UTC") 吗? - Mamoun Benghezal
在R控制台中,您的当前时区是什么,请键入 Sys.timezone() - ccapizzano
as.POSIXct("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S",tz="UTC") - 在中间删除as.Date()部分。这不是必要的,它只是意味着您剪切了时间组件,从而破坏了转换。@MamounBenghezal的答案还返回了一个POSIXlt而不是POSIXct日期/时间。优先使用as.POSIXct,因为它通常更具适应性。 - thelatemail
请注意,我需要将本地时间 "12/31/2014 6:42:52 PM" 转换为 UTC 时间。 - Sam
如所示,您的日期和时间同时为本地时间和协调世界时。 - user3710546
1个回答

29

如果您想将当前时区的日期时间转换为UTC,需要导入本地时区,然后将显示时区调整为“UTC”。例如:在澳大利亚东部标准时间,我是UTC+10。

out <- as.POSIXct("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S")
out
#"2014-12-31 06:42:52 EST"
#(Australian Eastern Standard Time)
as.numeric(out)
#[1] 1419972172

现在为了显示目的,调整时区:

attr(out, "tzone") <- "UTC" 
out
#[1] "2014-12-30 20:42:52 UTC" 
# display goes 10 hours backwards as I'm UTC+10
as.numeric(out)
#[1] 1419972172
请注意,这不会影响底层的数字数据(自1970年01月01日以来的秒数),它只会改变显示内容。

这正是我在寻找的。感谢您的回答。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接