欢迎访问宙启技术站
智能推送

Java日期函数:解析时间格式和时间戳转换

发布时间:2023-06-15 19:20:39

时间在计算机中是以时间戳的形式存储的,时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。而解析时间格式就是将时间戳转换为可读的时间格式,或者将可读的时间格式转换为时间戳。在Java中,有一些日期函数可以方便地解析时间格式和时间戳转换。

一、解析时间格式

1. SimpleDateFormat类

SimpleDateFormat是Java中用于格式化和解析日期时间的类。可以用一个日期模板将日期转换为文本格式,或将文本格式转换为日期。

例如,按照年-月-日的格式输出当前日期,代码如下:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = format.format(new Date());
System.out.println(currentDate);

此代码中,new Date()获取当前时间,将其格式化为"yyyy-MM-dd"的形式,输出结果为:2022-05-23。

再例如,将一个文本时间格式解析为Date类型,代码如下:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = "2022-05-23 13:45:30";
Date date = format.parse(dateString);
System.out.println(date);

此代码中,将字符串"2022-05-23 13:45:30"按照"yyyy-MM-dd HH:mm:ss"的格式转换为日期Date类型,输出结果为:Mon May 23 13:45:30 CST 2022。

2. DateTimeFormatter类

DateTimeFormatter是Java8中的一个日期类,提供了更简单、安全、线程安全的日期和时间解析方式。

例如,将一个文本格式时间解析为LocalDateTime类型,代码如下:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateString = "2022-05-23 13:45:30";
LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);
System.out.println(dateTime);

此代码中,将字符串"2022-05-23 13:45:30"按照"yyyy-MM-dd HH:mm:ss"的格式转换为LocalDateTime类型,输出结果为:2022-05-23T13:45:30。

二、时间戳转换

1. Date类

Date类是Java中的日期类,可以将时间戳转换为日期。

例如,将一个时间戳转换为Date类型,代码如下:

long timestamp = 1657563930000L;
Date date = new Date(timestamp);
System.out.println(date);

此代码中,将时间戳1657563930000L转换为Date类型,输出结果为:Thu Jul 14 19:45:30 CST 2022。

2. LocalDateTime类

LocalDateTime类也可以将时间戳转换为日期,但需要注意不同的时间戳单位。

例如,将一个毫秒级时间戳转换为LocalDateTime类型,代码如下:

long timestamp = 1657563930000L;
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
System.out.println(dateTime);

此代码中,将时间戳1657563930000L转换为LocalDateTime类型,输出结果为:2022-07-11T17:58:50。

再例如,将一个秒级时间戳转换为LocalDateTime类型,代码如下:

long timestamp = 1657563930L;
LocalDateTime dateTime = LocalDateTime.ofEpochSecond(timestamp, 0, ZoneOffset.ofHours(8));
System.out.println(dateTime);

此代码中,将时间戳1657563930L转换为LocalDateTime类型,输出结果为:2022-07-11T17:58:50。

总结:

Java中,解析时间格式和时间戳转换可以使用多种类和方法,其中SimpleDateFormat和DateTimeFormatter都可以方便地解析时间格式,Date和LocalDateTime则可以将时间戳转换为日期。根据时间戳的单位不同,有不同的转换方法。需要根据具体的情况选择合适的类和方法进行操作。