You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pyspark中将阿拉伯/乌尔都文日期转换为yyyy-mm-dd格式的英文日期

Pyspark转换阿拉伯/乌尔都文日期为标准格式实现方案

核心逻辑为:先将日期字符串中的东部阿拉伯数字转换为拉丁数字,再按照原日期结构解析为日期类型,最后输出yyyy-mm-dd格式的标准日期。


实现步骤

  • 首先构建数字映射关系:乌尔都/阿拉伯文使用的东部阿拉伯数字٠١٢٣٤٥٦٧٨٩对应拉丁数字0123456789
  • 使用Pyspark内置translate()函数完成数字字符替换,该方案为算子原生实现,性能远高于自定义UDF,适合大数据量场景
  • 用to_date()函数解析转换后的日期字符串,最后通过date_format()输出目标格式

完整代码示例

from pyspark.sql import SparkSession
from pyspark.sql.functions import translate, to_date, date_format, col

# 初始化Spark会话
spark = SparkSession.builder.appName("ArabicDateConvert").getOrCreate()

# 模拟测试数据,你可以替换为读取JSON文件的逻辑
test_data = [("٠٤-٢٥-٢٠٢١",), ("١٢-٠١-٢٠٢٢",), ("٠٧-١٥-٢٠٢٣",)]
df = spark.createDataFrame(test_data, ["ar_date_col"])

# 定义字符映射规则
east_arabic_nums = "٠١٢٣٤٥٦٧٨٩"
latin_nums = "0123456789"

# 执行转换逻辑
df_result = df.withColumn(
    # 替换东部阿拉伯数字为拉丁数字
    "latin_date_str",
    translate(col("ar_date_col"), east_arabic_nums, latin_nums)
).withColumn(
    # 按原日期结构解析为日期类型,示例原格式为MM-dd-yyyy,可根据实际结构调整参数
    "date_obj",
    to_date(col("latin_date_str"), "MM-dd-yyyy")
).withColumn(
    # 输出yyyy-mm-dd格式标准日期
    "standard_date",
    date_format(col("date_obj"), "yyyy-MM-dd")
)

# 查看转换结果
df_result.show(truncate=False)

转换结果示例

+-------------+--------------+----------+-------------+
|ar_date_col  |latin_date_str|date_obj  |standard_date|
+-------------+--------------+----------+-------------+
|٠٤-٢٥-٢٠٢١  |04-25-2021    |2021-04-25|2021-04-25   |
|١٢-٠١-٢٠٢٢  |12-01-2022    |2022-12-01|2022-12-01   |
|٠٧-١٥-٢٠٢٣  |07-15-2023    |2023-07-15|2023-07-15   |
+-------------+--------------+----------+-------------+

注意事项

  • 如果你的原日期结构不是MM-dd-yyyy,只需要修改to_date中的格式参数和实际结构匹配即可,比如原格式为dd-MM-yyyy就将参数改为dd-MM-yyyy
  • 如果需要同时兼容波斯数字,可将映射规则扩展为east_arabic_nums = "٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹",对应latin_nums = "01234567890123456789"即可
  • 转换完成后可以用filter(col("standard_date").isNull())筛选出转换失败的异常日期做单独处理

内容的提问来源于stack exchange,提问作者Atif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:36:03