带有时区偏移的时间戳

问题描述 投票:0回答:1

目标是获取特定格式的当前本地时间戳以及添加的时区偏移量。例如:

2023-08-28T03:51:46.222+09:30

我找不到可以返回时区偏移量的 Spark 函数 带冒号

:

到目前为止我有这个 - 偏移量不正确并且错过了冒号:

from pyspark.sql import functions as F

df.select(F.date_format(F.from_utc_timestamp(F.current_timestamp(), 'Australia/Adelaide'), "yyyy-MM-dd'T'HH:mm:ss.SSSZ")).show(1, truncate=0)
# +----------------------------------------------------------------------------------------------------+
# |date_format(from_utc_timestamp(current_timestamp(), Australia/Adelaide), yyyy-MM-dd'T'HH:mm:ss.SSSZ)|
# +----------------------------------------------------------------------------------------------------+
# |2023-08-28T22:53:42.651+0000                                                                        |
# +----------------------------------------------------------------------------------------------------+

我使用 Spark 3.2。

apache-spark pyspark apache-spark-sql timestamp timezone
1个回答
2
投票

首先使用

current_timestamp
获取当前时区的时间戳,然后使用
date_format
和特殊格式说明符
xxx
输出以冒号分隔的小时和分钟偏移量

fmt = "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"
df.select(F.date_format(F.current_timestamp(), fmt))

+--------------------------------------------------------------+
|date_format(current_timestamp(), yyyy-MM-dd'T'HH:mm:ss.SSSxxx)|
+--------------------------------------------------------------+
|2023-08-28T19:54:08.624+05:30                                 |
+--------------------------------------------------------------+
© www.soinside.com 2019 - 2024. All rights reserved.