在 spark scala 中将时间戳列从 UTC 转换为 EST
Convert timestamp column from UTC to EST in spark scala
我在时间戳类型的 spark 数据框中有一列,日期格式如“2019-06-13T11:39:10.244Z”
我的目标是将此列转换为保持相同格式的 EST 时间(减去 4 小时)。
我尝试使用 from_utc_timestamp api 但它似乎正在将 UTC 时间转换为我的本地时区 (+5:30) 并将其添加到时间戳,然后从中减去 4 小时。我尝试使用 Joda 时间,但由于某种原因,EST 时间增加了 33 天
innput = 2019-06-13T11:39:10.244Z
使用 from_utc_timestamp api:
val tDf = df.withColumn("newTimeCol", to_utc_timestamp(col("timeCol"), "America/New_York"))
输出=2019-06-13T13:09:10.244Z+5:30
使用 Joda 时间包:
val coder : (String => String) = (arg: String) => {
new DateTime(arg, DateTimeZone.UTC).minusHours(4).toString("yyyy-mm-dd'T'HH:mm:s.SS'Z'")}
val sqlfunc = udf(coder)
val tDf = df.withColumn("newTime", sqlfunc(col("_c20")))
输出=2019-39-13T07:39:10.244Z
期望输出 = 2019-06-13T07:39:10.244Z
请告知我应该如何进行。提前致谢
创建输出时格式字符串中有错字。
你的格式字符串应该是 yyyy-MM-dd'T'HH:mm:s.SS'Z' 但它是 yyyy- mm-dd'T'HH:mm:s.SS'Z'.
mm
是分钟的格式字符,而 MM
是月份的格式字符。您可以检查所有格式字符 here.
我在时间戳类型的 spark 数据框中有一列,日期格式如“2019-06-13T11:39:10.244Z” 我的目标是将此列转换为保持相同格式的 EST 时间(减去 4 小时)。 我尝试使用 from_utc_timestamp api 但它似乎正在将 UTC 时间转换为我的本地时区 (+5:30) 并将其添加到时间戳,然后从中减去 4 小时。我尝试使用 Joda 时间,但由于某种原因,EST 时间增加了 33 天
innput = 2019-06-13T11:39:10.244Z
使用 from_utc_timestamp api:
val tDf = df.withColumn("newTimeCol", to_utc_timestamp(col("timeCol"), "America/New_York"))
输出=2019-06-13T13:09:10.244Z+5:30
使用 Joda 时间包:
val coder : (String => String) = (arg: String) => {
new DateTime(arg, DateTimeZone.UTC).minusHours(4).toString("yyyy-mm-dd'T'HH:mm:s.SS'Z'")}
val sqlfunc = udf(coder)
val tDf = df.withColumn("newTime", sqlfunc(col("_c20")))
输出=2019-39-13T07:39:10.244Z
期望输出 = 2019-06-13T07:39:10.244Z
请告知我应该如何进行。提前致谢
创建输出时格式字符串中有错字。
你的格式字符串应该是 yyyy-MM-dd'T'HH:mm:s.SS'Z' 但它是 yyyy- mm-dd'T'HH:mm:s.SS'Z'.
mm
是分钟的格式字符,而 MM
是月份的格式字符。您可以检查所有格式字符 here.