欢迎访问宙启技术站
智能推送

Java函数中的日期和时间格式处理方法

发布时间:2023-06-22 11:08:03

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函数中的日期和时间格式处理方法的详细介绍。了解这些方法有助于我们更加方便地管理和操作日期和时间,提高代码的质量和效率。