如何使用Java内置函数来格式化日期
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类。我们可以根据自己的需求选择不同的日期格式化类来处理日期格式。值得注意的是,不同的日期格式化类在使用时需要注意线程安全。
