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

如何将Java Long类型时间戳转换为hh:mm:ss, dd/mm/yyyy格式

嘿,这个转换需求很常见,我给你两种Java里常用的解决方案,分别适配不同的JDK版本,你可以根据自己的项目情况选~

推荐方案:Java 8+ 新时间API(更安全可靠)

Java 8之后引入的java.time包解决了旧API的线程安全问题,用法也更清晰,是现在的首选方案。步骤很简单:

  1. 把Long类型的毫秒级时间戳转成Instant对象
  2. 转换为指定时区的LocalDateTime(如果不指定,默认用系统时区)
  3. 用DateTimeFormatter定义你需要的格式
  4. 格式化输出

注意:这里要特别注意格式字符串的大小写——MM代表月份,mm代表分钟;hh是12小时制(比如上午9点显示为09),如果需要24小时制就换成HH。

代码示例:

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class TimestampConverter {
    public static void main(String[] args) {
        Long timestamp = 1527666638657L;
        
        // 转换为Instant(毫秒级时间戳对应ofEpochMilli)
        Instant instant = Instant.ofEpochMilli(timestamp);
        // 转成系统默认时区的LocalDateTime,也可以指定比如ZoneId.of("Asia/Shanghai")
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        // 定义格式化器,严格对应你要的'hh:mm:ss, dd/mm/yyyy'(注意把分钟的mm换成月份的MM)
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss, dd/MM/yyyy");
        // 格式化得到结果
        String formattedTime = localDateTime.format(formatter);
        
        System.out.println("Finishing-time = " + formattedTime);
    }
}

兼容旧版本:使用SimpleDateFormat

如果你的项目还在使用Java 8之前的版本,那只能用SimpleDateFormat了,但要注意它不是线程安全的——不要把它声明为静态变量,要么每次使用都新建实例,要么用ThreadLocal来包装避免多线程问题。

代码示例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class OldTimestampConverter {
    public static void main(String[] args) {
        Long timestamp = 1527666638657L;
        
        // 每次使用都新建SimpleDateFormat实例,避免线程安全问题
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss, dd/MM/yyyy");
        Date date = new Date(timestamp);
        String formattedTime = sdf.format(date);
        
        System.out.println("Finishing-time = " + formattedTime);
    }
}

几个关键提醒

  • 时区问题:如果你的业务需要统一时区(比如UTC或者北京时间),一定要明确指定,不然不同环境的系统默认时区可能会导致转换结果不一致。
  • 格式字符串大小写:千万不要搞混MM(月份)和mm(分钟),hh(12小时制)和HH(24小时制),这是很多人容易踩的坑。
  • 线程安全:SimpleDateFormat在多线程场景下会出问题,所以尽量用Java 8+的新API,或者做好线程隔离。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:44