R 如何更改时间戳的时区?

R 如何更改时间戳的时区?,r,datetime,apache-spark,sparkr,sparklyr,R,Datetime,Apache Spark,Sparkr,Sparklyr,我有一个数据帧,可以使用spark\u read\u csv加载。我使用最新版本的sparkyr和Spark(2.1.1) #来源:表[??x 32] #数据库:spark_连接 姓名日期 1 ABA 2016年7月8日00:00:02.075 现在这个时间戳在GMT中,我想把它转换成EST 在“normal”R中,我会使用lubridate来执行此操作,但它似乎不适用于sparklyr 我该怎么做? 非常感谢 这里有一个例子,我把时区从东部标准时间改为格林尼治标准时间,你可以做相反的事情

我有一个数据帧,可以使用
spark\u read\u csv
加载。我使用最新版本的
sparkyr
Spark
(2.1.1)

#来源:表[??x 32]
#数据库:spark_连接
姓名日期
1 ABA 2016年7月8日00:00:02.075
现在这个时间戳在
GMT
中,我想把它转换成
EST

在“normal”R中,我会使用
lubridate
来执行此操作,但它似乎不适用于
sparklyr

我该怎么做?
非常感谢

这里有一个例子,我把时区从东部标准时间改为格林尼治标准时间,你可以做相反的事情

    > my_time <- Sys.time()
    > my_time
    [1] "2017-06-15 14:30:05 EDT"
    > new_time <- as.POSIXlt(z, tz = 'UTC')
    > new_time
    [1] "2017-06-15 18:29:38 UTC"
    > 
>我的时间我的时间
[1] “2017-06-15 14:30:05美国东部时间”
>新时间新时间
[1] “2017-06-15 18:29:38 UTC”
> 

这在SparkR中非常有效。方法是使用
selectExpr
expr
语句。我通常需要从历元毫秒到本地时间。请注意,我的示例可能以您没有的格式的数据开始,但您将看到我如何将其发送到posix对象,就像您在文章中所做的那样。此外,我不是转换单个时间戳,而是转换一列时间戳

olson_tz<- sample(OlsonNames(),3)
epoch_times_milliseconds<- c(1501535920000, 1301535927000, 1101535927000)
epoch_times_seconds<- epoch_times_milliseconds/1000

df<- data.frame(olson_tz = olson_tz, time2convert = epoch_times_seconds)
sdf<- SparkR::createDataFrame(df) # now a SparkDataFrame

sdf<- withColumn(sdf, "time2convert_ps", SparkR:::from_unixtime(sdf$time2convert, format = 'yyyy-MM-dd HH:mm:ss'))
sdf<- withColumn(sdf, "local_time", expr("from_utc_timestamp(time2convert_ps, olson_tz)"))
olson_tz有处理时区的Hive(Spark SQL的基础)函数,可能会有所帮助,这是官方页面,搜索“区域”:

关于在dplyr中使用该功能,请查看Sparkyr网站中的此链接:


第二个链接已断开
olson_tz<- sample(OlsonNames(),3)
epoch_times_milliseconds<- c(1501535920000, 1301535927000, 1101535927000)
epoch_times_seconds<- epoch_times_milliseconds/1000

df<- data.frame(olson_tz = olson_tz, time2convert = epoch_times_seconds)
sdf<- SparkR::createDataFrame(df) # now a SparkDataFrame

sdf<- withColumn(sdf, "time2convert_ps", SparkR:::from_unixtime(sdf$time2convert, format = 'yyyy-MM-dd HH:mm:ss'))
sdf<- withColumn(sdf, "local_time", expr("from_utc_timestamp(time2convert_ps, olson_tz)"))