如何在python中将具有给定utc偏移量的datetime字符串转换为具有更窄utc偏移量的等效datetime

fzwojiic  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(357)

我有一个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限制内的等效字符串?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题