时间在计算机世界中非常重要,但是以计算机内部的时间格式显示给人看并不太友好。在Java中,我们可以使用毫秒时间戳来表示日期和时间,但是毫秒时间戳并不能直接让人方便地了解当地的时间,因为它只表示与 1970 年 1 月 1 日 00:00:00 之间的间隔时间。本文将介绍如何将 Java 中的毫秒时间戳转换为可读的日期格式。
一、Date类
Java自带的Date类是表示时间和日期的类,它的构造方法可以将毫秒时间戳转换为日期对象。同时,Date类也有toString()方法可以将日期转换为可读的字符串格式。
long millisecond = System.currentTimeMillis();
Date date = new Date(millisecond);
System.out.println(date.toString());
上述代码输出结果为:
Fri Nov 19 12:46:12 CST 2021
虽然这个时间是以可读的字符串格式呈现,但与时区有关,有时不符合我们的要求。因此,我们可以使用SimpleDateFormat类对日期进行格式化。
二、SimpleDateFormat类
SimpleDateFormat是一个用于格式化日期的类,它可以将日期转换为任意格式的字符串,也可以将字符串解析成日期对象。下面是几个常用的日期格式与对应的代码:
- "yyyy-MM-dd HH:mm:ss.SSS":2021-11-19 12:46:12.345
- "yyyy年MM月dd日 HH时mm分ss秒":2021年11月19日 12时46分12秒
- "yyyy-MM-dd":2021-11-19
- "HH:mm:ss":12:46:12
对于毫秒时间戳转换为日期格式,我们可以这样写:
long millisecond = 1637300772345L;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String dateStr = dateFormat.format(new Date(millisecond));
System.out.println(dateStr);
上述代码输出结果为:
2021年11月19日 12时46分12秒
三、LocalDateTime类
Java 8 引入了新的 API — LocalDateTime,它提供了一个更好的解决方案来处理日期和时间。
使用LocalDateTime类的ofInstant()方法将毫秒时间戳转换为日期,并使用DateTimeFormatter对日期进行格式化,即可轻松地转换为可读的日期格式。以下是示例代码:
long millisecond = 1637300772345L;
Instant instant = Instant.ofEpochMilli(millisecond);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(formatter);
System.out.println(formattedDateTime);
上述代码输出结果为:
2021-11-19 12:46:12
结语
本文总结了Java中几种将毫秒时间戳转换为日期格式的方法,它们都有各自的优缺点,需要根据实际情况选择使用。Java中日期相关的类库和方法比较丰富,希望读者能够掌握这些知识并在实际应用中灵活运用。