我正在尝试将UTC时间转换为本地标准时间。我找到了许多转换为当地夏令时的函数,但我没有成功地获得标准时间。现在,我有以下代码转换为我特定时区的当地夏令时:
pb.date <- as.POSIXct(date,tz="UTC")
format(pb.date, tz="timeZone",usetz=TRUE)
首先,POSIXct日期时间在内部总是UCT。print.POSIXt
和format.POSIXt
方法将适当地使TZ从其内部表示输出:
pb.date <- as.POSIXct(Sys.Date())
Sys.Date()
#[1] "2015-07-09"
所以那是格林威治当前日期的午夜:
format(pb.date, tz="America/Los_Angeles",usetz=TRUE)
#[1] "2015-07-08 17:00:00 PDT"
格林威治的午夜是前一天美国左海岸的夏令时下午5点。你需要为你的TZ(和你的OS)使用正确的字符值,这两者目前都是未指定的。
美国太平洋时区比格林尼治标准时间晚8小时(在冬季),所以你可以使用一个标准/日光不可知的时区:
> format(pb.date,usetz=TRUE, tz="Etc/GMT+8")
[1] "2015-07-08 16:00:00 GMT+8"
(注意+和"后面的"的反转)
我知道这个问题有一个公认的答案,但如果有人出现,这可以帮助。我需要一个函数将UTC时间转换为MTN时间(服务器在UTC,我们在MTN中操作)。不知道为什么,但需要先将其强制为UTC/GMT,然后将其转换为MTN。但是它确实有效
mtn_ts = function(utcTime){
library(lubridate)
toTz = "us/mountain"
utcTime = force_tz(utcTime,tzone= 'GMT')
dt = as.POSIXct(format(utcTime,tz = toTz,origin ='GMT', usetz=TRUE))
dt = force_tz(dt,tzone= toTz)
return(dt)
}
mtn_ts(as.POSIXct("2021-09-27 14:48:51.000000000"))