Java函数中的日期和时间格式处理方法
Java中有很多内置的日期和时间处理类和方法,可以轻松地对日期和时间进行格式化、计算、比较和解析等操作,如java.util.Date、java.util.Calendar、java.time.LocalDateTime、java.text.SimpleDateFormat等。本文将详细介绍Java函数中的日期和时间格式处理方法,包括日期时间的格式化和转换、日期时间的加减、日期时间的比较和解析等。
一、日期时间的格式化和转换
Java提供了两种方式进行日期时间的格式化和转换:
1. SimpleDateFormat类
SimpleDateFormat类是Java中日期时间格式化的主要类,它提供了一系列的构造方法和格式化方法。SimpleDateFormat类的构造方法有以下几种:
① public SimpleDateFormat(String pattern)
通过给定的参数pattern来构造SimpleDateFormat实例,其中pattern是一个字符串,用于指定格式化的模式。以下是一些常用的格式化模式:
模式 说明
yyyy 年份,四位数字
MM 月份,两位数字
dd 日,两位数字
HH 小时,24小时制,两位数字
hh 小时,12小时制,两位数字
mm 分钟,两位数字
ss 秒,两位数字
S 毫秒,一位数字
E 星期几,文本形式,如Mon、Tue、Wed等
注意:大小写敏感,HH对应的是24小时制的小时数,hh对应的是12小时制的小时数,S只有一位数字。除了上面列出的模式,SimpleDateFormat还支持其他一些模式,如以下模式:
y、yyy、yyyyy、yyyyyy、G:不同的格式化年份
M、MM、MMM、MMMM、MMMMM:不同的格式化月份
d、dd、D、w、W:不同的格式化日
a、A:上午或下午的标记
k、K、z、Z:表示时区的偏移量
如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = new Date();
String strDate = sdf.format(date);
//格式化日期时间,结果:2021-07-01 20:49:16.237
② public SimpleDateFormat(String pattern, Locale locale)
通过给定的参数pattern和locale来构造SimpleDateFormat实例,其中locale表示要使用的区域设置。
如:
SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss z", Locale.ENGLISH);
Date date = new Date();
String strDate = sdf.format(date);
//格式化日期时间,结果:Thu Jul 01 2021 20:49:16 CST
SimpleDateFormat类还提供了parse()方法用于将字符串解析成日期时间。它的用法如下:
Date parse(String source) throws ParseException
其中source是要解析的字符串,ParseException是解析异常。
如:
String strDate = "2021-07-01 20:49:16.237";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = sdf.parse(strDate);
//解析日期时间
2. DateTimeFormatter类
DateTimeFormatter是Java 8中新增的日期时间格式化类,用于更强大的日期和时间操作。DateTimeFormatter类的创建方式有以下几种:
① static DateTimeFormatter ofPattern(String pattern)
通过给定的参数pattern来创建DateTimeFormatter实例,其中pattern是一个字符串,用于指定格式化的模式。
如:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
LocalDateTime now = LocalDateTime.now();
String strDate = now.format(dtf);
//格式化日期时间,结果:2021-07-01 20:49:16.237
② static DateTimeFormatter ofPattern(String pattern, Locale locale)
通过给定的参数pattern和locale来创建DateTimeFormatter实例,其中locale表示要使用的区域设置。
如:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("E MMM dd yyyy HH:mm:ss z", Locale.ENGLISH);
ZonedDateTime now = ZonedDateTime.now();
String strDate = now.format(dtf);
//格式化日期时间,结果:Thu Jul 01 2021 20:49:16 CST
DateTimeFormatter类还提供了parse()方法用于将字符串解析成日期时间。它的语法与SimpleDateFormat相同。
如:
String strDate = "2021-07-01 20:49:16.237";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
LocalDateTime now = LocalDateTime.parse(strDate, dtf);
//解析日期时间
二、日期时间的加减
Java中可以通过调用Calendar类和Date类的方法来实现日期时间的加减操作。
1. Calendar类
Calendar类是Java中日期和时间的主要类之一,它提供了很多的方法来进行日期和时间的加减操作。其中add()方法是用来加减日期和时间的,它有两个参数: 个参数是要加减的字段(如年、月、日等),第二个参数是要加减的数量。
如:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);
Date date = cal.getTime();
//将日期加1天
2. Date类
Date类也提供了一些方法来进行日期和时间的加减操作。其中,getTime()方法可以获取一个Date对象对应的时间戳,它的返回值为UTC时间1970年1月1日0时0分0秒到当前时间的毫秒数。因此,可以使用毫秒数进行日期时间的加减操作。
如:
Date now = new Date();
long plusOneMinute = now.getTime() + 60 * 1000;
Date date = new Date(plusOneMinute);
//将日期加1分钟
三、日期时间的比较
Java中可以通过调用Date类和Calendar类的方法来实现日期时间的比较。
1. Date类
Date类提供了两个方法equals()和compareTo(),可以用来进行日期时间的比较。其中equals()方法用于比较两个Date对象的值是否相等,而compareTo()方法可以比较两个Date对象的大小。
如:
Date date1 = new Date();
Date date2 = new Date(date1.getTime() + 60 * 1000);
boolean isEqual = date1.equals(date2);
int compareValue = date1.compareTo(date2);
//比较日期时间是否相等以及大小
2. Calendar类
Calendar类中也提供了两个方法equals()和compareTo(),作用与Date类的相应方法相同。
如:
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal2.add(Calendar.DAY_OF_MONTH, 1);
boolean isEqual = cal1.equals(cal2);
int compareValue = cal1.compareTo(cal2);
//比较日期时间是否相等以及大小
四、日期时间的解析
Java中可以通过调用DateFormat类来完成字符串到日期时间的解析。
1. SimpleDateFormat类
SimpleDateFormat类提供了parse()方法,用于将字符串解析成指定格式的日期时间对象。
如:
String strDate = "2021-07-01 20:49:16.237";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = sdf.parse(strDate);
//解析日期时间
2. DateTimeFormatter类
DateTimeFormatter类也提供了parse()方法,用于将字符串解析成指定格式的日期时间对象。
如:
String strDate = "2021-07-01 20:49:16.237";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
LocalDateTime now = LocalDateTime.parse(strDate, dtf);
//解析日期时间
以上就是Java函数中的日期和时间格式处理方法的详细介绍。了解这些方法有助于我们更加方便地管理和操作日期和时间,提高代码的质量和效率。
