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

Spark(Scala)中如何将字符串格式时间戳转为日期对象?

Spark Scala 转换特定格式时间戳字符串为日期/时间戳对象

格式字符串说明

你的时间戳格式是Thu Sep 12 06:54:21 +0000 2013,对应的Java SimpleDateFormat格式字符串为:EEE MMM dd HH:mm:ss Z yyyy
各部分含义:

  • EEE: 英文星期缩写(如Thu)
  • MMM: 英文月份缩写(如Sep)
  • dd: 两位日期(如12)
  • HH: 24小时制的两位小时(如06)
  • mm: 两位分钟(如54)
  • ss: 两位秒数(如21)
  • Z: 时区偏移量(如+0000)
  • yyyy: 四位年份(如2013)

完整Scala代码示例

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{to_timestamp, to_date}

object TimestampConversion {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName("TimestampConversion")
      .master("local[*]") // 本地测试用,生产环境移除该配置
      .getOrCreate()

    import spark.implicits._

    // 构造示例DataFrame
    val df = Seq(
      "Thu Sep 12 06:54:21 +0000 2013",
      "Thu Sep 12 06:59:12 +0000 2013",
      "Thu Sep 12 07:01:22 +0000 2013"
    ).toDF("created_at")

    // 转换为带时分秒的Timestamp类型
    val dfWithTimestamp = df.withColumn(
      "created_timestamp",
      to_timestamp($"created_at", "EEE MMM dd HH:mm:ss Z yyyy")
    )

    // 转换为仅含年月日的Date类型
    val dfWithDate = dfWithTimestamp.withColumn(
      "created_date",
      to_date($"created_at", "EEE MMM dd HH:mm:ss Z yyyy")
    )

    // 打印结果
    dfWithDate.show(false)

    spark.stop()
  }
}

兼容低版本Spark的方案

如果你的Spark版本低于3.0,需要用unix_timestamp + from_unixtime组合实现转换:

import org.apache.spark.sql.functions.{unix_timestamp, from_unixtime}

val dfWithTimestamp = df.withColumn(
  "created_timestamp",
  from_unixtime(unix_timestamp($"created_at", "EEE MMM dd HH:mm:ss Z yyyy"))
)

注意事项

  • 若出现解析失败,大概率是JVM语言环境不支持英文缩写,可在SparkSession初始化时指定:
    val spark = SparkSession.builder()
      .appName("TimestampConversion")
      .master("local[*]")
      .config("spark.sql.session.timeZone", "UTC")
      .config("spark.driver.extraJavaOptions", "-Duser.language=en -Duser.country=US")
      .config("spark.executor.extraJavaOptions", "-Duser.language=en -Duser.country=US")
      .getOrCreate()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:30:46