您的位置:

从时间戳到时间的转换方法

时间是程序中一个非常常见的概念,而在Java中,我们使用时间戳来表示时间,即表示距离1970年1月1日00:00:00.000 GMT的毫秒数。如何将时间戳转换成我们平时所熟悉的时间格式呢?这篇文章将从多个方面进行阐述。

一、时间戳转成Date类型

我们可以使用Java8提供的Instant类来将时间戳转换成Date类型。Instant类是ISO-8601标准的时间表示法,其精度可以达到纳秒级别。

long timestamp = 1589175772000L; //示例时间戳
Instant instant = Instant.ofEpochMilli(timestamp);
Date date = Date.from(instant);

以上代码将时间戳转换成了Date类型,使用Date类型的toString()方法即可打印出时间信息。

二、时间戳转成自定义格式时间

我们可以使用Java8提供的DateTimeFormatter类将时间格式化为我们自定义的格式。

long timestamp = 1589175772000L; //示例时间戳
Instant instant = Instant.ofEpochMilli(timestamp);
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);

以上代码将时间戳转换成了自定义格式的时间,并打印出来了。

三、自定义格式时间转成时间戳

我们可以使用Java8提供的DateTimeFormatter类将自定义格式的时间转换成时间戳。

String formattedDateTime = "2020-05-11 14:09:32"; //示例时间字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(formattedDateTime, formatter);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
long timestamp = instant.toEpochMilli();

以上代码将自定义格式的时间转换成了时间戳。

四、使用常用第三方库进行转换

为了方便,我们也可以使用常用的第三方库进行时间戳和时间的转换。常用的库有Joda-Time和FastDateFormat。

//使用Joda-Time进行时间戳转成时间
long timestamp = 1589175772000L; //示例时间戳
DateTime dateTime = new DateTime(timestamp);
String formattedDateTime = dateTime.toString("yyyy-MM-dd HH:mm:ss");

//使用Joda-Time进行时间转成时间戳
String formattedDateTime = "2020-05-11 14:09:32"; //示例时间字符串
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime = formatter.parseDateTime(formattedDateTime);
long timestamp = dateTime.getMillis();

//使用FastDateFormat进行时间戳转成时间
long timestamp = 1589175772000L; //示例时间戳
String formattedDateTime = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(timestamp);

//使用FastDateFormat进行时间转成时间戳
String formattedDateTime = "2020-05-11 14:09:32"; //示例时间字符串
long timestamp = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").parse(formattedDateTime).getTime();

以上代码展示了常用第三方库的使用方式。

五、总结

以上就是Java中从时间戳到时间的转换方法。我们可以使用Java8类库提供的Instant、LocalDateTime、DateTimeFormatter等类进行转换,也可以使用Joda-Time和FastDateFormat等常用第三方库进行转换。将时间戳转换成我们所熟悉的时间格式,帮助我们更好地理解时间的概念,更便于我们对时间进行处理。