17370845950

在Java中如何格式化时间戳输出
Java中格式化时间戳推荐使用DateTimeFormatter(Java 8+),线程安全且简洁;旧版本可用SimpleDateFormat,但非线程安全。

在Java中格式化时间戳输出,通常使用 SimpleDateFormatDateTimeFormatter(Java 8+)来将时间戳(long 类型的毫秒值)转换为可读的日期时间字符串。

1. 使用 SimpleDateFormat(适用于 Java 7 及更早版本)

SimpleDateFormat 是 java.text 包下的类,用于格式化和解析日期。可以将时间戳转为指定格式的字符串。

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

public class TimestampFormat { public static void main(String[] args) { long timestamp = System.currentTimeMillis(); // 示例时间戳 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedTime = sdf.format(new Date(timestamp)); System.out.println(formattedTime); } }

说明:
"yyyy-MM-dd HH:mm:ss" 是常见的格式,你也可以根据需要调整,例如:
- "dd/MM/yyyy" → 05/12/2025
- "yyyy年MM月dd日 HH时mm分ss秒" → 2025年12月05日 14时30分25秒

2. 使用 DateTimeFormatter(推荐,Java 8+)

Java 8 引入了新的时间 API(java.time 包),更安全、线程友好。推荐使用 InstantLocalDateTimeZonedDateTime 配合 DateTimeFormatter

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

public class ModernTimestampFormat { public static void main(String[] args) { long timestamp = System.currentTimeMillis(); Instant instant = Instant.ofEpochMilli(timestamp); LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String formattedTime = dateTime.format(formatter);

    System.out.println(formattedTime);
}

}

优点:
- DateTimeFormatter 是不可变对象,线程安全
- 新的时间 API 更清晰、不易出错

3. 常见格式符号说明

无论使用哪种格式器,模式字符串含义一致:

  • yyyy — 年份(如 2025)
  • MM — 月份(01-12)
  • dd — 日期(01-31)
  • HH — 小时(24小时制,00-23)
  • mm — 分钟(00-59)
  • ss — 秒数(00-59)
  • SSS — 毫秒(000-999)

4. 注意事项

使用 SimpleDateFormat 时要注意:
- 它不是线程安全的,多线程环境下建议使用 ThreadLocal 或改用 DateTimeFormatter
- 时间戳单位是毫秒,确保传入的是毫秒值(System.currentTimeMillis())

基本上就这些。如果你使用的是 Java 8 或更高版本,优先选择 DateTimeFormatter,代码更简洁也更安全。