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

Spark中如何将指定日期转换为前一天0点的Epoch时间戳

在Spark中将MM-dd-yyyy格式日期转换为前一天0点的Epoch时间戳

你已经完成了日期解析工作,接下来只需三步就能得到目标Epoch时间戳:获取前一天日期、转换为UTC时区的午夜时刻、生成秒级时间戳。

完整代码示例

import java.time.{LocalDate, ZoneOffset}
import java.time.format.DateTimeFormatter

// 你的现有日期解析代码
val dateInformat = DateTimeFormatter.ofPattern("MM-dd-yyyy")
val batchpartitiondate = LocalDate.parse("10-14-2022", dateInformat)

// 1. 计算输入日期的前一天
val previousDay = batchpartitiondate.minusDays(1)

// 2. 将前一天日期转换为UTC时区的00:00:00时刻
val previousDayMidnightUTC = previousDay.atStartOfDay(ZoneOffset.UTC).toInstant

// 3. 转换为秒级Epoch时间戳
val epochTimestamp = previousDayMidnightUTC.getEpochSecond()
// 输出结果:1665619200

关键说明

  • 时区指定:必须使用ZoneOffset.UTC,因为Epoch时间戳的基准是UTC时间,若使用本地时区会因时差导致结果偏差。
  • 时间戳精度:getEpochSecond()返回秒级时间戳,如果需要毫秒级,可替换为previousDayMidnightUTC.toEpochMilli()。

示例验证

  • 输入日期10-14-2022 → 解析为2022-10-14 → 前一天2022-10-13 → UTC 00:00:00对应的Epoch时间戳为1665619200,符合需求。
  • 输入日期10-15-2022 → 解析为2022-10-15 → 前一天2022-10-14 → UTC 00:00:00对应的Epoch时间戳为1665705600,与你给出的示例结果匹配(推测你示例中的输入日期12-15-2022为笔误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:11:51