将pyspark日期时间格式转换为不同的日期时间格式

iyfjxgzm  于 2023-05-16  发布在  Spark
关注(0)|答案(1)|浏览(239)

我在用数据砖加载一些数据。
数据中包含日期时间。
日期时间字段的格式如下:2022-07-06 16:43:18.696 +0100
我希望它是这样的格式:2022-07-06T16:43:18.8000000+00:0
我最终将数据转换为JSON,并将其输入到API中(我已经完成了),因此字段将被转换为字符串。我只是在使用pyspark将日期时间转换为所需格式时遇到了困难。API调用代码已完成,但出错,因为它期望datetime字段采用所需的格式。

ulmd4ohb

ulmd4ohb1#

您需要使用to_utc_timestamp函数。

from pyspark.sql.functions import to_utc_timestamp, date_format

df = [
    {"Category": "A", "date": "2022-07-06 16:43:18.696 +0100", "Indictor": 1},
    {"Category": "A", "date": "2022-07-06 16:43:18.696 +0200", "Indictor": 0},
    {"Category": "A", "date": "2022-07-06 16:43:18.696 +0300", "Indictor": 1},
    {"Category": "A", "date": "2022-07-06 16:43:18.696 +0400", "Indictor": 1},
    {"Category": "A", "date": "2022-07-06 16:43:18.696 +0500", "Indictor": 1},
]

df = spark.createDataFrame(df)

# Convert the datetime field to the desired format
converted_data = df.withColumn(
    "date",
    date_format(
        to_utc_timestamp(df["date"], "GMT"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'+00:0'"
    ),
)

# Show the converted data
converted_data.show(truncate=False)

结果

+--------+--------+--------------------------------+
|Category|Indictor|date                            |
+--------+--------+--------------------------------+
|A       |1       |2022-07-06T15:43:18.6960000+00:0|
|A       |0       |2022-07-06T14:43:18.6960000+00:0|
|A       |1       |2022-07-06T13:43:18.6960000+00:0|
|A       |1       |2022-07-06T12:43:18.6960000+00:0|
|A       |1       |2022-07-06T11:43:18.6960000+00:0|
+--------+--------+--------------------------------+

还要注意,时间戳中的+0100意味着时区偏移。因此,它比UTC时间提前1小时。从您所需的格式中,您的API需要一个UTC时区。

相关问题