Spark:将GMT时间戳转换为东部考虑夏令时

时间:2017-08-18 19:11:06

标签: apache-spark timezone timestamp pyspark dst

我尝试将一列GMT时间戳字符串转换为东部时区的时间戳列。我想考虑夏令时。

我的时间戳字符串列如下所示:

'2017-02-01T10:15:21+00:00'

我想出了如何将字符串列转换为EST中的时间戳:

from pyspark.sql import functions as F

df2 = df1.withColumn('datetimeGMT', df1.myTimeColumnInGMT.cast('timestamp'))
df3 = df2.withColumn('datetimeEST', F.from_utc_timestamp(df2.datetimeGMT, "EST"))

但是时间不会因夏令时而改变。还有其他功能或某些东西可以通过转换时间戳来解释夏令时吗?

编辑:我想我弄明白了。在上面的from_utc_timestamp调用中,我需要使用" America / New_York"而不是" EST":

df3 = df2.withColumn('datetimeET', F.from_utc_timestamp(df2.datetimeGMT, "America/New_York"))

1 个答案:

答案 0 :(得分:4)

我最终搞清楚了答案,所以我想我会在这里添加它。我也认为这个问题/答案是值得的,因为当我在发布问题之前搜索这个问题时,我无法找到关于夏令时的任何关于火花的信息。我可能应该意识到我应该搜索底层的java函数。

问题的答案最终是使用字符串" America / New_York"而不是" EST"。这正确地适用于夏令时。

from pyspark.sql import functions as F
df3 = df2.withColumn('datetimeET', F.from_utc_timestamp(df2.datetimeGMT, "America/New_York"))