R 是否转换为没有时区的日期和时间?
我有一个时间格式为R 是否转换为没有时区的日期和时间?,r,timezone,dst,R,Timezone,Dst,我有一个时间格式为“1/1/2010 10:00”。我想将其转换为时间对象。这是一家总部位于阿尔伯塔省卡尔加里的公司。请注意,公司时间内未进行夏令时调整。如何将其转换为日期时间对象?您可以使用as.POSIXct创建日期/时间对象。看起来阿尔伯塔省卡尔加里的时区是UTC-07:00,所以你可以这样做 strptime("1/1/2010 10:00", format="%m/%d/%Y %H:%M", tz="Etc/GMT-7") (假设采用月/日/年格式——有关其他格式选项,请参见?str
“1/1/2010 10:00”
。我想将其转换为时间对象。这是一家总部位于阿尔伯塔省卡尔加里的公司。请注意,公司时间内未进行夏令时调整。如何将其转换为日期时间对象?您可以使用as.POSIXct
创建日期/时间对象。看起来阿尔伯塔省卡尔加里的时区是UTC-07:00,所以你可以这样做
strptime("1/1/2010 10:00", format="%m/%d/%Y %H:%M", tz="Etc/GMT-7")
(假设采用月/日/年格式——有关其他格式选项,请参见
?strtime
)。您可以使用“GMT”来代替指定真实时区。假设您不希望时区出现在最终对象中,您可以尝试以下操作。我将此作为一个答案而不是对Flick先生的答案的评论,因为如果我只在一个日期使用我的代码,它似乎不起作用。出于某种原因,我的代码似乎只有在有日期/时间的data.frame
时才起作用
my.data <- read.csv(text='
id,date,time,latitude,longitud
AA,3/16/2017,1:30,19.735,-156.085
AA,3/16/2017,2:57,19.800,-156.065
AA,3/16/2017,3:42,19.830,-156.057
AA,3/16/2017,17:31,19.963,-155.952
BB,3/16/2017,17:44,19.964,-155.951
BB,3/17/2017,2:46,19.985,-155.998
', header = TRUE, stringsAsFactors = FALSE, sep = ',')
my.data$date.time <- do.call(paste0, list(my.data$date, ' ', my.data$time))
my.data$date.time <- strptime(my.data$date.time, "%m/%d/%Y %H:%M", tz = "")
my.data
# id date time latitude longitud date.time
#1 AA 3/16/2017 1:30 19.735 -156.085 2017-03-16 01:30:00
#2 AA 3/16/2017 2:57 19.800 -156.065 2017-03-16 02:57:00
#3 AA 3/16/2017 3:42 19.830 -156.057 2017-03-16 03:42:00
#4 AA 3/16/2017 17:31 19.963 -155.952 2017-03-16 17:31:00
#5 BB 3/16/2017 17:44 19.964 -155.951 2017-03-16 17:44:00
#6 BB 3/17/2017 2:46 19.985 -155.998 2017-03-17 02:46:00
str(my.data)
#'data.frame': 6 obs. of 6 variables:
# $ id : chr "AA" "AA" "AA" "AA" ...
# $ date : chr "3/16/2017" "3/16/2017" "3/16/2017" "3/16/2017" ...
# $ time : chr "1:30" "2:57" "3:42" "17:31" ...
# $ latitude : num 19.7 19.8 19.8 20 20 ...
# $ longitud : num -156 -156 -156 -156 -156 ...
# $ date.time: POSIXlt, format: "2017-03-16 01:30:00" "2017-03-16 02:57:00" "2017-03-16 03:42:00" "2017-03-16 17:31:00" ...
my.data“没有时区”是什么意思?根据定义,时间有一个时区……对不起,我的意思是公司时间不随夏令时而改变,因此一年中的大部分时间公司时间不与当地时间一致。那么你是指MT时区而不是MST。对吗?我想你的意思是“转换时间,根据日期对(MT-MST)差异进行1小时调整”,那么你大概有一列datetimes,而不仅仅是一个值。重复的。请投票结束。