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

掌握Java日期时间函数的使用

发布时间:2023-06-12 14:20:05

Java是一种面向对象的编程语言,具有强大的日期和时间支持。Java提供了丰富的日期时间函数,使程序员可以轻松地对日期和时间进行操作。本文将介绍Java日期时间函数的使用,以便更好地掌握Java编程技术。

一、Java日期时间函数的类型

Java日期时间函数主要有以下几种类型:

1. java.util.Date类:这是Java提供的最基本的时间类,它包含了毫秒数,可以表示自1970年1月1日00:00:00 GMT以来的时间。它没有时区信息。

2. java.util.Calendar类:Calendar类是Java提供的一组日期时间对象的操作类,它提供了丰富的方法来操作日期和时间。

3. java.text.SimpleDateFormat类:SimpleDateFormat类是Java提供的一种格式化日期时间的类。它可以将日期时间格式化为任何想要的格式,并将格式化的日期时间转化为日期时间对象。

4. java.time包:Java 8引入了全新的日期时间API,它由java.time包支持。该包提供了更为强大和方便的日期时间函数。

二、Java.util.Date类

Java.util.Date类是Java日期时间函数中最常用的类之一。它的主要功能是提供一个表示日期和时间的类。该类中提供了以下函数:

1.创建Date对象

只需使用无参数的默认构造函数,即可创建当前日期时间的Date对象。

Date date = new Date();

也可以使用有参数的构造函数来创建指定日期时间的对象。

// 创建指定日期时间的Date对象
Date date = new Date(120, 5, 20, 12, 20, 30);

2.获取日期和时间

使用Date对象可以获取当前的日期和时间。Date对象中提供了以下方法:

// 获取当前日期时间的字符串形式
String dateStr = date.toString();
System.out.println(dateStr); // Wed Jun 20 12:20:30 GMT+08:00 2020

// 获取小时
int hour = date.getHours();
System.out.println(hour); // 12

// 获取分钟
int minute = date.getMinutes();
System.out.println(minute); // 20

// 获取秒
int second = date.getSeconds();
System.out.println(second); // 30

3.判断日期先后

Date类提供了before()和after()方法,可以判断两个日期哪个日期在前。方法返回值为boolean类型,如果 个日期在前,则返回true,否则返回false。

// 判断两个日期哪个在前
Date date1 = new Date(120, 5, 19, 8, 0, 0);
Date date2 = new Date(120, 5, 20, 12, 20, 30);

if(date1.before(date2)){
    System.out.println("date1在date2之前");
} else if(date1.after(date2)){
    System.out.println("date1在date2之后");
} else {
    System.out.println("两个日期相等");
}

三、Java.util.Calendar类

Java.util.Calendar类是Java日期时间函数中的一个非常重要的类。它提供了一种计算日期和时间的实用方法。Calendar类中提供的主要函数如下:

1.创建Calendar对象

创建一个Calendar对象,可以使用getInstance()或newCalendar()方法:

// 创建Calendar对象
Calendar calendar = Calendar.getInstance(); // 使用系统默认时区
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); // 使用指定时区
Calendar calendar = new GregorianCalendar(); // 创建默认的Calendar对象

2.获取日期和时间

Calendar类提供了以下方法来获取与日期和时间相关的信息:

// 获取日期相关信息
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 注意要加1
int day = calendar.get(Calendar.DAY_OF_MONTH);

// 获取时间相关信息
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);

3.设置日期和时间

Calendar类中提供了set()方法,可以设置指定的日期和时间:

// 设置日期相关信息
calendar.set(Calendar.YEAR, 2020);
calendar.set(Calendar.MONTH, 5);
calendar.set(Calendar.DAY_OF_MONTH, 20);

// 设置时间相关信息
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 20);
calendar.set(Calendar.SECOND, 30);

4.判断日期先后

Calendar类提供了compareTo()方法,可以判断两个日期哪个日期在前。返回值为负数表示当前日期在参数日期之前,返回值为正数表示当前日期在参数日期之后,返回值为0表示两个日期相等。

// 判断两个日期哪个在前
Calendar calendar1 = new GregorianCalendar(2020, 5, 19, 8, 0, 0);
Calendar calendar2 = new GregorianCalendar(2020, 5, 20, 12, 20, 30);

int result = calendar1.compareTo(calendar2);

if(result < 0){
    System.out.println("calendar1在calendar2之前");
} else if(result > 0){
    System.out.println("calendar1在calendar2之后");
} else {
    System.out.println("两个日期相等");
}

四、Java.text.SimpleDateFormat类

SimpleDateFormat类是Java日期时间函数中的一个非常实用的类。它可以将日期时间格式化为任何想要的格式,并将格式化的日期时间转化为日期时间对象。

1.格式化日期时间

使用SimpleDateFormat类可以将日期时间格式化为任何想要的格式:

// 将当前日期时间格式化为yyyy-MM-dd HH:mm:ss的形式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date());
System.out.println(dateStr);

2.将字符串转化为日期时间

使用SimpleDateFormat类可以将指定格式的字符串转化为Date类型的日期时间对象。

String dateStr = "2020-06-20 12:20:30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateStr);
System.out.println(date.toString());

五、Java.time包

Java 8引入了一个全新的日期时间API,它由java.time包支持。该包提供了更为强大和方便的日期时间函数。Java.time包中提供的主要类如下:

1.LocalDate类:表示本地时间,不包含时区信息。

2.LocalTime类:表示本地时间,只包含时分秒纳秒信息。

3.LocalDateTime类:表示本地日期时间,不包含时区信息。

4.DateTimeFormatter类:用于格式化和解析日期时间对象。

5.ZonedDateTime类:表示带时区的时间,包含本地时间和偏移量信息。

6.ZoneOffset类:表示时间偏移量。

7.Period类:表示日期时间间隔。

8.Duration类:表示时间间隔。

Java.time包中提供的函数非常丰富,这里只介绍其中的一些常用函数。

1.创建对象

创建对象可以使用now()方法,或者提供给其构造函数所需的参数。

// 创建LocalDate对象
LocalDate localDate = LocalDate.now();
LocalDate localDate = LocalDate.of(2020, 6, 20);

// 创建LocalTime对象
LocalTime localTime = LocalTime.now();
LocalTime localTime = LocalTime.of(12, 20, 30);

// 创建LocalDateTime对象
LocalDateTime localDateTime = LocalDateTime.now();
LocalDateTime localDateTime = LocalDateTime.of(2020, 6, 20, 12, 20, 30);

// 创建ZonedDateTime对象
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

2.获取日期和时间

获取日期和时间使用get()方法。

`

// 获取年份

int year = localDate.getYear();

int year = localDateTime.getYear();

// 获取月份

Month month = localDate.getMonth();

Month month = localDateTime.getMonth();

// 获取日

int day = localDate.getDayOfMonth();

int day = localDateTime.getDayOfMonth();

// 获取小时

int hour = localTime.getHour();

int hour = localDateTime.getHour();