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

Spark: converting GMT time stamps to Eastern taking daylight savings into account

我试图将一列GMT时间戳字符串转换为东部时区的一列时间戳。我想把夏令时储蓄考虑进去。

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

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

我了解了如何在EST中将字符串列转换为时间戳:

1
2
3
4
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"))

但是时间不会随着日光节约而改变。在转换时间戳时,是否还有其他功能或其他功能可以节省日光?

编辑:我想我知道了。在上面的"从UTC时间戳"调用中,我需要使用"美国/纽约"而不是"EST":

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


我最终找到了答案,所以我想把它加在这里。我也认为这个问题/答案是值得的,因为当我在发布问题之前搜索这个问题时,我找不到任何有关Spark日光节约的信息。我可能应该意识到我应该搜索潜在的Java函数。

这个问题的答案是使用字符串"美国/纽约",而不是"est"。这正确地应用了日光节约。

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