将UTC时间转换为R中的本地标准时间



我正在尝试将UTC时间转换为本地标准时间。我找到了许多转换为当地夏令时的函数,但我没有成功地获得标准时间。现在,我有以下代码转换为我特定时区的当地夏令时:

pb.date <- as.POSIXct(date,tz="UTC")
format(pb.date, tz="timeZone",usetz=TRUE)

首先,POSIXct日期时间在内部总是UCT。print.POSIXtformat.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"))

相关内容

  • 没有找到相关文章

最新更新