DateTimeFormatter
和SimpleDateFormat
不同的是,DateTimeFormatter
不但是不变对象,它还是线程安全的。线程的概念我们会在后面涉及到。现在我们只需要记住:因为SimpleDateFormat
不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而DateTimeFormatter
可以只创建一个实例,到处引用。
创建时,我们仍然通过传入格式化字符串实现:
格式化字符串的使用方式与SimpleDateFormat
完全一致。
这种方式可以按照Locale
默认习惯格式化。我们来看实际效果:
在格式化字符串中,如果需要输出固定字符,可以用'xxx'
表示。
当我们直接调用System.out.println()
对一个ZonedDateTime
或者LocalDateTime
实例进行打印的时候,实际上,调用的是它们的方法,默认的toString()
方法显示的字符串就是按照ISO 8601
格式显示的,我们可以通过DateTimeFormatter
预定义的几个静态变量来引用:
得到的输出和toString()
类似:
对ZonedDateTime
或LocalDateTime
进行格式化,需要使用DateTimeFormatter
类;