【发布时间】:2018-01-27 13:11:42
【问题描述】:
我正在尝试将一列 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"))
【问题讨论】:
-
是的,你是对的。您应该始终使用时区标识符的区域/地点形式。如果你愿意的话,你可以用这个来回答你自己的问题,尽管这个特定的点之前已经讨论过很多次了(尽管可能与 spark 无关)。
标签: apache-spark timezone timestamp pyspark dst