当前位置: 首页 > ds >正文

Java解析前端传来的Unix时间戳

在Java中,前端传递的 1749571200000 是一个 Unix时间戳(毫秒级),表示自1970年1月1日00:00:00 UTC以来经过的毫秒数。以下是两种常见的解析方式(推荐使用Java 8的java.time API):


方法1:使用 Java 8 的 java.time API(推荐)

java

复制

下载

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;public class TimestampParser {public static void main(String[] args) {long timestamp = 1749571200000L; // 前端传来的时间戳// Step 1: 转换为 Instant (UTC时间)Instant instant = Instant.ofEpochMilli(timestamp);// Step 2: 转换为本地时间(根据系统时区)LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());// Step 3: 格式化输出(可选)DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDate = localDateTime.format(formatter);System.out.println("解析结果: " + formattedDate); // 输出: 2025-06-09 08:00:00}
}
关键点:
  • Instant.ofEpochMilli() 将毫秒时间戳转为 Instant(UTC标准时间)。

  • LocalDateTime.ofInstant() 结合时区(如 ZoneId.systemDefault())转换为本地时间。

  • 使用 DateTimeFormatter 自定义日期格式。


方法2:使用旧版 java.util.Date(兼容旧项目)

java

复制

下载

import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.TimeZone;public class LegacyTimestampParser {public static void main(String[] args) {long timestamp = 1749571200000L; // 前端传来的时间戳// Step 1: 创建Date对象Date date = new Date(timestamp);// Step 2: 设置日期格式化器(指定时区)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 按需修改时区// Step 3: 格式化输出String formattedDate = sdf.format(date);System.out.println("解析结果: " + formattedDate); // 输出: 2025-06-09 08:00:00}
}

时区说明

  • 前端时间戳 通常是UTC时间,解析时需要明确目标时区:

    • 如果前端传递的是UTC时间,解析时建议先转UTC再按需调整时区。

    • 示例中 Asia/Shanghai(UTC+8)会导致时间+8小时。

  • 关键时区设置:

    • Java 8: ZoneId.of("UTC") 或 ZoneId.systemDefault()

    • 旧版API: sdf.setTimeZone(TimeZone.getTimeZone("UTC"))


验证时间戳

  • 工具验证:https://www.epochconverter.com/

  • 1749571200000 对应 UTC时间 2025-06-09 00:00:00
    转换为北京时间(UTC+8)则是 2025-06-09 08:00:00


总结

场景方案
Java 8+ 项目优先使用 Instant + LocalDateTime
兼容旧系统 (Java 7-)使用 Date + SimpleDateFormat
时区敏感务必显式设置目标时区
http://www.xdnf.cn/news/13180.html

相关文章:

  • Vue 自动导入函数和变量插件 unplugin-auto-import
  • MySQL故障排查、生产环境优化与存储引擎MyISAM和InnoDB
  • 什么是TRS收益互换?金融创新架构下的交易系统开发与实践
  • MacBook pro 修改Homebrew 为中国源
  • [Java恶补day20] 54. 螺旋矩阵
  • 互联网大厂Java求职面试:云原生与微服务架构的深度探讨
  • python基础语法Ⅰ
  • 基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
  • el-switch文字内置
  • 配置 macOS 上的 Ruby 开发环境
  • stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
  • 加密通信 + 行为分析:运营商行业安全防御体系重构
  • glb/gltf格式批量转换fbx/obj,材质贴图在,批量转换stl/dae等其他格式,无需一个个打开
  • 国产化Excel处理组件Spire.XLS教程:用 Java 获取所有 Excel 工作表名称(图文详解)
  • 【动态规划 数论】P9759 [COCI 2022/2023 #3] Bomboni|普及+
  • 十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
  • 大模型智能体核心技术:CoT与ReAct深度解析
  • mcts蒙特卡洛模拟树思想
  • 脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
  • 【Rust TCP编程】Rust网络编程之TCP编程语法解析与应用实战
  • PyG测试GCN无线通信网络拓扑推理方法时间复杂度
  • 使用python进行图像处理—像素级操作与图像算术(4)
  • Ai自动补全编程工具:llama vscode
  • kafka-重平衡
  • ES6(ES2015)特性全解析
  • PostgreSQL 对 IPv6 的支持情况
  • C/Python/Go示例 | Socket Programing与RPC
  • MinHook 如何对.NET底层的 Win32函数 进行拦截(上)
  • UE5 学习系列(二)用户操作界面及介绍
  • Python爬虫(四):PyQuery 框架