Java中日期时间格式化方法SimpleDateFormat和DateTimeFormatter使用完整示例及区别说明
示例代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;/* @author wh445306* @version 1.0* @Description DateFormat* @Date 2023-04-06 17:10*/
public class DateFormat {public static void main(String[] args) throws ParseException {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);System.out.println(dateString);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");String dateString2 = dateFormat.format(currentTime);System.out.println(dateString2);Date date1 = dateFormat.parse(dateString2);String dateString3 = formatter.format(date1);System.out.println(dateString3);// 将日期字符串转换为LocalDate对象LocalDate date = LocalDate.parse("2023-04-06");// 将LocalDate对象格式化为指定格式的字符串DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy年M月d日");String formattedDate = date.format(formatter1);System.out.println(formattedDate);// 将格式化后的字符串转换为LocalDate对象LocalDate parsedDate = LocalDate.parse(formattedDate, formatter1);// 将LocalDate对象转换为指定格式的字符串String parsedDateString = parsedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));System.out.println(parsedDateString);// 确认两个日期字符串相等assert parsedDateString.equals("2023-04-06");// 确认两个LocalDate对象相等assert parsedDate.equals(date);}
}
示例截图:
这里完整的用两种方法分别实现了日期和String的来回转换,鉴于SimpleDateFormat早已过时,且非线程安全,所以推荐大家首选使用DateTimeFormatter,用法基本都是差不多的。变化不大。但是DateTimeFormatter需要Java Level 8(8 - Lambdas, type annotations etc.),需留意。