Java函数如何实现日期和时间的格式化操作?
Java中的日期和时间都是由java.time包中的类来管理的。在进行日期和时间的格式化操作时,Java提供了三种不同类别的日期和时间处理方式:
1. java.text.SimpleDateFormat类
2. java.time.format.DateTimeFormatter类
3. org.apache.commons.lang3.time.DateFormatUtils类(Apache Commons库)
下面分别介绍这三种方式的使用方法。
1. java.text.SimpleDateFormat类
SimpleDateFormat类是Java中日期时间格式化的最常用类,它能够将日期和时间格式化为字符串,并能将字符串解析为日期和时间。SimpleDateFormat类的常见构造函数如下:
SimpleDateFormat(String pattern) :以指定的模式构造SimpleDateFormat对象。
SimpleDateFormat(String pattern, Locale locale) :根据指定的区域设置和模式构造SimpleDateFormat对象。
在创建SimpleDateFormat对象时,需要指定日期时间格式的模式。模式是由字母和符号组成的字符串,可以通过在模式字符串中添加各种字母和符号来获得不同的日期时间格式。
下面是常见的日期时间格式字符:
1. y:年份
2. M:月份
3. d:日
4. H:小时(24小时制)
5. h:小时(12小时制)
6. m:分钟
7. s:秒钟
8. S:毫秒
除了日期和时间格式字符外,SimpleDateFormat还支持下面的符号:
1. -:表示连接
2. \:转义字符
3. /:表示连接
4. :或.:表示分隔符
5. ‘’:表示字面值
下面是几个SimpleDateFormat的使用实例:
1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date()); // 输出当前时间的日期和时间字符串
2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2020-07-12"); // 将日期字符串解析为Date对象
2. java.time.format.DateTimeFormatter类
DateTimeFormatter类是Java 8引入的日期时间格式化类,它使用方式和SimpleDateFormat类有些不同。DateTimeFormatter类提供了很多预定义的日期时间格式化样式,也可以自定义格式化样式。DateTimeFormatter类的常用方法有:
1. ofPattern(String pattern):以指定的模式构造DateTimeFormatter对象。
2. format(TemporalAccessor temporal):使用指定的格式化器格式化TemporalAccessor对象。
3. parse(CharSequence text):解析文本字符串为TemporalAccessor对象。
4. parse(CharSequence text, TemporalQuery<T> query):使用指定的格式化器格式化文本字符串,返回指定类型对象。
注意,TemporalAccessor没有set方法,所以只能进行读取操作。除此之外,TemporalAccessor还可以用于表示时间日期范围,比如YearMonth类表示年月,LocalDateTime类表示日期时间等。
下面是几个DateTimeFormatter的使用实例:
1. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateStr = LocalDateTime.now().format(dtf); // 把当前时间的日期时间格式化为字符串
2. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate ld = LocalDate.parse("2020/07/12", dtf); // 把日期字符串解析为LocalDate对象
3. org.apache.commons.lang3.time.DateFormatUtils类
DateFormatUtils类是Apache Commons库提供的日期时间格式化类。它提供了一些与SimpleDateFormat类相似的方法,但在某些地方有更好的性能和更多的特征。不同于SimpleDateFormat类和DateTimeFormatter类,DateFormatUtils类是静态的,无需实例化,直接调用其中的方法即可。
DateFormatUtils类的方法有:
1. format(Date date, String pattern):使用指定的格式化样式格式化日期对象。
2. format(long millis, String pattern):使用指定的格式化样式格式化毫秒数。
下面是DateFormatUtils的使用实例:
1. String dateStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"); // 把当前日期时间格式化为字符串
2. String dateStr = DateFormatUtils.format(System.currentTimeMillis(), "yyyy/MM/dd"); // 把时间戳格式化为日期字符串
总之,Java中提供了多种方式对日期和时间进行格式化操作,开发者可以根据具体需求选择不同的方式来完成格式化操作。
