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")) |