如何在R中为日期添加午夜时间并输出无1/2小时偏移的结果
解决方案
你遇到的时间偏移本质是as.POSIXct默认调用本地时区解析日期字符串,叠加夏令时规则才出现偏差,无需通过加减时间戳的冗余操作实现,以下是两种简洁实现方案:
方案1:仅用R基础包
data <- c(NA,"2014-03-18","2014-04-01","2014-04-15","2014-04-28","2014-05-14") data1 <- format(as.POSIXct(as.Date(data), tz = "UTC"), "%Y-%m-%d %H:%M:%S")
逻辑说明:先将字符串转为无时区属性的Date类,再强制转换为UTC时区的POSIXct格式,默认生成当日00:00:00的时间戳,完全规避本地时区和夏令时干扰。
方案2:使用lubridate包(代码更简洁)
library(lubridate) data1 <- format(ymd(data, tz = "UTC"), "%Y-%m-%d %H:%M:%S")
逻辑说明:直接用ymd()函数解析日期字符串,解析时直接指定UTC时区,一步得到带0点时间的datetime对象后格式化即可。
内容的提问来源于stack exchange,提问作者Mata
相关产品推荐
相关产品推荐

