我有一个python databricks笔记本,它可以获取外部数据,这些数据的datetime字符串的utc偏移量在utc-24:00和utc+24:00之间。示例datetime字符串为' 2020-06-26T03:05:52+20:00
'. 但是,我还使用了一个库(spark 3.x使用java datetimeformatter),它只支持utc-18:00和utc+18:00之间的utc偏移量。在spark3.x中,pyspark函数 to_timestamp()
退货 null
对于utc偏移量超出+/-18:00范围的日期时间。
示例代码:
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder.master("local[2]").appName("test") \
.config("spark.driver.memory", "2g") \
.config("spark.executor.memory", "1g") \
.config('spark.driver.extraJavaOptions', '-Duser.timezone=GMT') \
.config('spark.executor.extraJavaOptions', '-Duser.timezone=GMT') \
.config('spark.sql.session.timeZone', 'UTC') \
.getOrCreate()
columns = ["datetime", "offset"]
data = [
("2020-06-26T03:05:52+20:00", "+20:00"),
("2020-06-26T03:05:52+02:00", "+2:00"),
]
test_df = spark.createDataFrame(data).toDF(*columns)
test_df_two = test_df.withColumn(
'to_ts', F.to_timestamp(F.col("datetime"))
)
test_df_two.show(truncate=False)
输出:
+-------------------------+------+-------------------+
|datetime |offset|to_ts |
+-------------------------+------+-------------------+
|2020-06-26T03:05:52+20:00|+20:00|null |
|2020-06-26T03:05:52+02:00|+2:00 |2020-06-26 01:05:52|
+-------------------------+------+-------------------+
如何将此类日期时间字符串转换为库中规定的+/-18:00限制内的等效字符串?
暂无答案!
目前还没有任何答案,快来回答吧!