使用基础R转换UTC到CET时区结果偏差的问题求助
问题解答
你的问题出在对Europe/Copenhagen时区的偏移量规则理解有误:
- 2023年2月4日,哥本哈根处于冬令时(CET,Central European Time),此时区的偏移量是UTC+1,而非你预期的UTC+2。
- 哥本哈根的夏令时(CEST,Central European Summer Time,UTC+2)通常从每年3月最后一个周日开始,到10月最后一个周日结束。2023年的夏令时启动日期是3月26日,2月4日还未进入夏令时阶段。
验证代码逻辑
你的代码本身没有问题,它正确地将UTC时间转换为了当前系统时区(Europe/Copenhagen)的本地时间:
# create UTC date utc_date <- as.POSIXct( x = '2023-02-04 01:00:00', tz = 'UTC', usetz = TRUE ) # convert date format( utc_date, format = '%Y-%m-%d %H:%M', tz = Sys.timezone(), usetz = TRUE )
运行这段代码得到的"2023-02-04 02:00 CET"是正确结果,符合当时的时区规则。
如果确实需要转换为UTC+2时区
如果你不管具体地区的夏令时规则,只想固定转换为UTC+2的时间,可以直接指定tz = "Etc/GMT-2"(注意符号逻辑:GMT-2对应UTC+2):
format( utc_date, format = '%Y-%m-%d %H:%M', tz = "Etc/GMT-2", usetz = TRUE )
这段代码会输出你预期的"2023-02-04 03:00 GMT-2"。
内容的提问来源于stack exchange,提问作者Serkan
相关产品推荐
相关产品推荐

