根据东部标准时间(EST)中设定的时间和数据,从水质连续监测探头中获得了一系列数据集,因此没有夏令时(EDT)的校正。在R中,字段在从MS access数据库导入数据表时被确认为因素,但是当使用as.POSIXct()日期和时间转换时,从2016-03-13的02:00 (24时钟)开始转换为NAs。这是由于从东部时间过渡到EDT...therefore技术2016-03-1302:00不存在。
一些已创建的数据作为示例
test<-data.frame(Date=rep(as.Date("2016-03-13"),120),Hour=rep(seq(0,23,1),5),Min=rep(seq(0,60,15),24))
是否有方法将因子或字符字段转换为as POSIXct字段,同时保留EST时区指定?或者,是否有一种方法来识别并将适当的日期和时间转换为EST和EDT?
我周而复始地走来走去,什么也找不到。我试图转换到格林尼治标准时间(或UTC),然后转换回东部时间(tz=“美国/纽约”)。我意识到这是一个持续的问题,那些处理日期和时间数据的人,特别是在R中的人,很想离开EDT。
任何帮助都是感激的.我在这件事上束手无策。
发布于 2016-06-21 21:09:39
使用POSIX tz = "America/New_York"的问题在于,即使底层时间戳存储在美国东部标准时间(UTC-5)中,夏时制也会被计算在内(UTC-4或UTC-5)。
您应该能够指定您的tz为Etc/GMT+5。这样,就很容易在东部时间、东部时间和格林尼治时间之间进行转换。注意,在R中,UTC以西的时区用正偏移量表示(请参阅?timezone中的时区名称文档)。
以下是一些示例数据(夏令节约在东部时间3/16/16凌晨2:00生效):
StartTime=as.numeric(as.POSIXct("2016-03-11 0:00:00",format="%Y-%m-%d %H:%M",origin="1970-01-01",tz="Etc/GMT+5"))
EndTime=as.numeric(as.POSIXct("2016-03-15 0:00:00",format="%Y-%m-%d %H:%M",origin="1970-01-01",tz="Etc/GMT+5"))
Interval=15*60 #15-min
data.EST=as.POSIXct(seq(from = StartTime,to = EndTime, by=Interval),origin="1970-01-01",tz="Etc/GMT+5") #generate date stamps
# convert Eastern Standard Time (in R: GMT+5) to local time (accounts for daylight savings):
data.EastCoast<- format(data.EST, tz="America/New_York")
# convert Eastern Standard Time (in R: GMT+5) to UTC/GMT:
data.UTC<- format(data.EST, tz="GMT")
compare.times<-data.frame(data.EST,data.EastCoast,data.UTC)
compare.times[(198:203),]
data.EST data.EastCoast data.UTC
198 2016-03-13 01:15:00 2016-03-13 01:15:00 2016-03-13 06:15:00
199 2016-03-13 01:30:00 2016-03-13 01:30:00 2016-03-13 06:30:00
200 2016-03-13 01:45:00 2016-03-13 01:45:00 2016-03-13 06:45:00
201 2016-03-13 02:00:00 2016-03-13 03:00:00 2016-03-13 07:00:00
202 2016-03-13 02:15:00 2016-03-13 03:15:00 2016-03-13 07:15:00
203 2016-03-13 02:30:00 2016-03-13 03:30:00 2016-03-13 07:30:00祝好运!
发布于 2016-05-05 16:05:51
在转换到POSIX期间,您需要指定时区。参见此示例:
test<-data.frame(Date=rep(as.Date("2016-03-13"),96),Hour=rep(seq(0,23,1), each=4),Min=rep(seq(0,45,15)))
wrong<-as.POSIXct(paste(test$Date, test$Hour, test$Min), format="%Y-%m-%d %H %M")
ans<-as.POSIXct(paste(test$Date, test$Hour, test$Min), format="%Y-%m-%d %H %M", tz="EST")
compare<-cbind(test, wrong, ans)在向量“错误”中,没有指定时区,因此NA,但在第二种情况下,指定了东方标准,并给出了所需的结果。
发布于 2021-06-07 21:14:03
我遇到了一个类似的问题,使用不遵守夏令时的水质数据。我发现有用的解决方法是使用America/Jamaica而不是America/New_York。下面是GMT偏移量和要使用的tz的列表。
America/VirginAmerica/JamaicaAmerica/ReginaPacific/PitcairnPacific/GambierPacific/Honoluluhttps://stackoverflow.com/questions/37053620
复制相似问题