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

如何使用Java内置函数来格式化日期

发布时间:2023-06-02 00:31:32

Java内置了许多函数可以帮助我们方便地格式化日期。在实际开发中,我们经常需要将日期转换成字符串格式,或者将字符串格式的日期转换成Java中的Date对象。下面就来介绍一下Java内置的日期格式化函数。

1. SimpleDateFormat类

SimpleDateFormat是Java中最常用的日期格式化类。它可以将日期格式化成指定的字符串,也可以将字符串转换成Date对象。其构造函数的参数是日期格式化模板,常用的格式包括:

- yyyy:四位数的年份

- MM:月份(01-12)

- dd:日期(01-31)

- HH:24小时制的小时数(00-23)

- hh:12小时制的小时数(01-12)

- mm:分钟数(00-59)

- ss:秒数(00-59)

- S:毫秒数

- E:星期几(如星期二)

示例代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateString = sdf.format(date);
System.out.println(dateString);  // 输出格式为:2021-03-23 10:23:45

上述代码中,我们通过SimpleDateFormat对象将当前时间格式化成指定格式的字符串。如果我们有一个字符串类型的日期,也可以使用SimpleDateFormat将其转换成Date对象,代码如下:

String strDate = "2021-03-23 15:20:51";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(strDate);
System.out.println(date);  // 输出格式为:Tue Mar 23 15:20:51 CST 2021

2. DateTimeFormatter类

在Java 8之后,Java API新增了DateTimeFormatter类,提供了更加灵活和强大的日期格式化功能。与SimpleDateFormat不同的是,DateTimeFormatter支持线程安全,性能更高。

DateTimeFormatter的格式化模板和SimpleDateFormat类似,但语法略有不同。示例代码:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(LocalDateTime.now());
System.out.println(dateString);  // 输出格式为:2021-03-25 09:46:23

上述代码中,我们使用LocalDateTime.now()获取当前时间,并使用DateTimeFormatter对象将其格式化成指定格式的字符串。如果我们有一个字符串类型的日期,也可以使用DateTimeFormatter将其转换成对应的Date对象,代码如下:

String strDate = "2021-03-23 15:20:51";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(strDate, formatter);
System.out.println(dateTime);  // 输出格式为:2021-03-23T15:20:51

3. DateFormat类

除了SimpleDateFormat和DateTimeFormatter类之外,Java还提供了DateFormat类用于日期格式化。它是一个抽象类,具体实现类有SimpleDateFormat类、DateFormatSymbols类等。

示例代码:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateString = df.format(date);
System.out.println(dateString);  // 输出格式为:2021-03-23 10:23:45

上述代码中,我们使用DateFormat对象将当前时间格式化成指定格式的字符串。

4. java.time包

Java 8之后新增了java.time包,提供了更加方便和灵活的日期处理方法。其LocalDate、LocalTime和LocalDateTime子类实现了不可变日期时间对象,具有线程安全和高性能的特点。其格式化方法与DateTimeFormatter类似,示例代码:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.now();
String dateString = formatter.format(dateTime);
System.out.println(dateString);  // 输出格式为:2021-03-25 09:46:23

上述代码中,我们使用LocalDateTime对象将当前时间格式化成指定格式的字符串。

总结

Java内置了许多函数来格式化日期,常用的有SimpleDateFormat、DateTimeFormatter和DateFormat类。我们可以根据自己的需求选择不同的日期格式化类来处理日期格式。值得注意的是,不同的日期格式化类在使用时需要注意线程安全。