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

在PySpark中如何将Zulu毫秒时间戳转换为可读日期时间格式?

Spark毫秒级时间戳转可读日期解决方案

问题出在你的时间戳是毫秒级(1533953335000),但Spark的TimestampType默认解析的是秒级时间戳,直接强转会把毫秒数当作秒数计算,自然得到错误的远未来日期(50579-01-17)。

解决方案

根据DTMZ列的原始类型,选择对应的处理方式:

情况1:DTMZ是数值类型(如Long)

先将毫秒时间戳除以1000转换为秒级,再转为Timestamp类型,最后按需格式化:

from pyspark.sql import functions as f
from pyspark.sql import types as t

# 转换为Timestamp类型(带完整时间信息)
df = df.withColumn('DTMZ', f.to_timestamp(df.DTMZ / 1000))

# 如需转为yyyy-MM-dd格式的日期字符串
df = df.withColumn('DTMZ_date_str', f.date_format(f.col('DTMZ'), 'yyyy-MM-dd'))

# 如需转为Date类型
df = df.withColumn('DTMZ_date', f.to_date(f.col('DTMZ')))

情况2:DTMZ是字符串类型

先将字符串转为Long类型,再按上述步骤处理:

from pyspark.sql import functions as f
from pyspark.sql import types as t

df = df.withColumn('DTMZ', f.to_timestamp(f.col('DTMZ').cast(t.LongType()) / 1000))
# 后续格式化步骤同情况1

验证示例时间戳

将1533953335000除以1000得到1533953335,对应的正确日期是2018-08-11。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:10:26