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

Java中的时间日期函数库全解析及用法举例。

发布时间:2023-06-11 01:38:20

Java中内置了丰富的时间日期函数库,可以方便地操作和处理时间日期。本文将对Java中常用的时间日期函数库进行详细介绍,并举例说明其常见用法。

1. Java中的时间日期类

Java中的时间日期类主要有以下几种:

- Date类:Java最早的时间日期类,提供了与时间日期相关的基本方法,但在实际开发中已经不再使用,因为它有很多不足之处,如线程安全问题等。

- Calendar类:Java日期时间处理的核心类,提供了大量的日期时间操作方法,但其 API 不太友好,而且很多时候需要进行繁琐的类型转换。

- SimpleDateFormat类:用于打印和解析日期时间的类,可以将日期时间格式化为需要的字符串或将字符串解析为日期时间。

- LocalDateTime类:Java 8引入的类,较之于前面的Date和Calendar类解析起来更为方便,但是该类只关注日期时间的表示和转换,对于时钟、时区等不是很完善。

- ZonedDateTime类: Java 8 引入的时区日期时间类,它使用了 ISO-8601 日历系统,并结合时区提供了处理日期时间的方法,可以提供更方便的日期时间处理操作。

2. Calendar类的常用方法

Calendar是Java中最常用的日期时间处理类之一,它提供了工厂方法 getInstance 获取日历对象,通过一些常用的实例方法 Calendar 可以方便地进行时间日期的计算和转换,以下为其常用方法介绍及用法举例:

- get()方法:获取日历实例中某个字段的值。

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;  //注意月份从0开始,需要+1才是实际的月份
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);

- set()方法:设置日历实例中某个字段的值。

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2022);     //设置年份为2022
cal.set(Calendar.MONTH, 9);      //设置月份为10月
cal.set(Calendar.DATE, 1);       //设置天为1号
cal.set(Calendar.HOUR_OF_DAY, 23);//设置小时为23
cal.set(Calendar.MINUTE, 59);    //设置分钟为59
cal.set(Calendar.SECOND, 59);    //设置秒钟为59

- add()方法:在日历实例的某个字段上增加或减去一定的数量。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 2);    //将日期增加2天
cal.add(Calendar.HOUR_OF_DAY, -3);    //将小时减去3小时

- getTime()方法:将Calendar实例转换为Date实例。

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

3. SimpleDateFormat类的常用方法

SimpleDateFormat是Java中常用的日期时间格式化工具类,它可以将Date类型的时间转换为字符串形式的日期时间,也可以将字符串形式的日期时间转换为Date类型的时间。以下为其常用方法介绍及用法举例:

- format()方法:将Date类型转换为字符串形式的日期时间。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //指定格式化的格式
Date date = new Date();     //获取当前时间
String strDate = sdf.format(date);  //将Date类型的时间转换为字符串形式的时间
System.out.println(strDate);    //输出结果为 "2022-03-17 10:23:30"

- parse()方法:将字符串形式的日期时间转换为Date类型的时间。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //指定格式化的格式
String strDate = "2022-03-17 10:23:30";
Date date = sdf.parse(strDate);    //将字符串形式的时间转换为Date类型的时间
System.out.println(date);    //输出结果为 "Thu Mar 17 10:23:30 CST 2022"

4. LocalDateTime类的常用方法

LocalDateTime是Java 8引入的类,在Date和Calendar类的基础上增加了许多方便的方法,以支持日期时间操作。以下为其常用方法介绍及用法举例:

- now()方法:获取当前日期时间。

LocalDateTime now = LocalDateTime.now();

- of()方法:根据传入的年、月、日、时、分、秒等参数创建 LocalDateTime 实例。

LocalDateTime date = LocalDateTime.of(2022, 3, 17, 10, 30, 30);

- plus()方法:在现有的 LocalDateTime 实例上增加一定的时间量。

LocalDateTime date = LocalDateTime.of(2022, 3, 17, 10, 30, 30);
LocalDateTime result = date.plusDays(1).plusHours(2).plusMinutes(30).plusSeconds(30);

- minus()方法:在现有的 LocalDateTime 实例上减去一定的时间量。

LocalDateTime date = LocalDateTime.of(2022, 3, 17, 10, 30, 30);
LocalDateTime result = date.minusDays(1).minusHours(2).minusMinutes(30).minusSeconds(30);

5. ZonedDateTime类的常用方法

ZonedDateTime是Java 8引入的时区日期时间类,它提供了ISO-8601标准的日期时间格式,并支持时区等复杂的日期时间操作。以下为其常用方法介绍及用法举例:

- now()方法:获取当前日期时间。

ZonedDateTime now = ZonedDateTime.now();

- of()方法:根据传入的年、月、日、时、分、秒等参数创建 ZonedDateTime 实例。

ZonedDateTime date = ZonedDateTime.of(2022, 3, 17, 10, 30, 30, ZoneId.of("Asia/Shanghai"));

- withZoneSameInstant()方法:将 ZonedDateTime 实例转换到指定的时区。

ZonedDateTime date = ZonedDateTime.of(2022, 3, 17, 10, 30, 30, ZoneId.of("Asia/Shanghai"));
ZonedDateTime result = date.withZoneSameInstant(ZoneId.of("America/New_York"));

- plus()方法:在现有的 ZonedDateTime 实例上增加一定的时间量。

ZonedDateTime date = ZonedDateTime.of(2022, 3, 17, 10, 30, 30, ZoneId.of("Asia/Shanghai"));
ZonedDateTime result = date.plusDays(1).plusHours(2).plusMinutes(30).plusSeconds(30);

- minus()方法:在现有的 ZonedDateTime 实例上减去一定的时间量。

ZonedDateTime date = ZonedDateTime.of(2022, 3, 17, 10, 30, 30, ZoneId.of("Asia/Shanghai"));
ZonedDateTime result = date.minusDays(1).minusHours(2).minusMinutes(30).minusSeconds(30);

6. 总结

Java中的时间日期函数库涵盖了众多的类和方法,本文主要介绍了Java中常用的日期时间处理类及其常用函数,如 Calendar、Date、SimpleDateFormat、LocalDateTime、ZonedDateTime,它们都提供了丰富的方法来处理日期时间,开发者可以根据自己的需求选择相应的类,来方便地操作和处理时间日期。