python - 如何在 Python 中将具有给定 UTC 偏移量的日期时间字符串转换为具有更窄 UTC 偏移量的等效日期时间
问题描述
我有一个 Python Databricks 笔记本,它获取具有日期时间字符串的外部数据,其 UTC 偏移量在 UTC-24:00 和 UTC+24:00 之间。示例日期时间字符串是“ 2020-06-26T03:05:52+20:00
”。但是,我还使用了一个仅支持 UTC-18:00 和 UTC+18:00 之间的 UTC 偏移量的库(Spark 3.x 使用 Java DateTimeFormatter)。在 Spark 3.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 限制内的等效字符串?
解决方案
推荐阅读
- python - 使用循环平均列表中的每 2 个值
- ionic-framework - ngModelChange 上的无限循环
- c# - 如何从另一个 UserControl 更改 UserControl 并返回到第一个(C#)?
- php - 如何在 Codeigniter 中使用 PHP 在特定条件下从 Mongodb 获取数据?
- css - QTreeWidget 自定义选择和悬停背景颜色行为
- excel - 按下向下/向上箭头时如何在不选择项目的情况下使用组合框?VBA
- javascript - 如何在 Blogger 的 Contempo 模板中隐藏侧边栏?
- javascript - jQuery 按钮单击功能未按预期工作
- database-connection - 难以连接到在线 postgreSQL 结构化数据库到超集
- excel - Excel ActiveX 组合框将所选日期显示为数字而不是日期