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

Java中的日期时间函数-JDK文档

发布时间:2023-07-06 04:21:47

Java中的日期时间函数主要从java.util包和java.time包中提供。在JDK 8之前,主要使用SimpleDateFormat类来处理日期时间,而在JDK 8之后,引入了新的日期时间库java.time(也称为JSR-310或ThreeTen)。下面是对这些功能的简要介绍。

## java.util.Date和java.util.Calendar类

java.util.Date类是从JDK的早期版本开始提供的主要日期和时间类。它是一个包含日期和时间信息的可变对象,可以使用它进行日期和时间的计算和操作。然而,该类存在一些问题,比如它不是线程安全的,且设计不符合面向对象的原则。

为了解决这些问题,JDK引入了java.util.Calendar类。它是一个抽象基类,用于表示和操作日期和时间。Calendar类提供了一组方法,用于获取和设置不同的日期和时间字段(如年、月、日、小时、分钟、秒等),以及执行日期和时间的计算和比较。

然而,这两个类在使用上仍然存在一些问题,如格式化和解析日期时间的困难、世界时区的支持不足等。

## java.text.SimpleDateFormat类

为了格式化和解析日期和时间,JDK提供了java.text.SimpleDateFormat类。它是一个基于模式的日期格式化类,可以将日期和时间对象(如java.util.Date)转换为字符串,并将字符串解析为日期和时间对象。

SimpleDateFormat类使用一种模式语法,其中特定的字母和符号代表日期和时间字段的不同部分。例如,yyyy代表4位年份,MM代表2位月份,dd代表2位日期,HH代表24小时制的小时,mm代表分钟等等。

这是一个使用SimpleDateFormat类格式化和解析日期时间的示例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期时间
        Date now = new Date();
        String formattedDate = dateFormat.format(now);
        System.out.println(formattedDate);

        // 解析日期时间
        String dateString = "2021-10-01 12:34:56";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println(parsedDate);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

## java.time包

在JDK 8中,引入了新的日期时间库,即java.time包(也称为JSR-310或ThreeTen)。这个包提供了一套全新的不可变类,用于表示和操作日期、时间、时间间隔和时区。

这是java.time包中一些重要的类:

- LocalDate:表示只包含日期的类。

- LocalTime:表示只包含时间的类。

- LocalDateTime:表示同时包含日期和时间的类。

- ZonedDateTime:表示包含时区信息的日期和时间。

- Duration:表示时间间隔。

- Period:表示日期间隔。

- Instant:表示从协调世界时开始的时间线上的瞬时位置。

这是一个使用java.time包中的LocalDate类的示例:

import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate now = LocalDate.now();
        System.out.println(now);

        // 创建指定日期
        LocalDate date = LocalDate.of(2021, 10, 1);
        System.out.println(date);

        // 计算日期间隔
        LocalDate tomorrow = now.plusDays(1);
        System.out.println(tomorrow);

        // 比较日期
        boolean isBefore = date.isBefore(now);
        System.out.println(isBefore);
    }
}

上述代码演示了如何使用LocalDate类获取当前日期,创建特定日期,计算日期间隔以及比较日期。

以上仅是Java中日期时间函数的简要介绍,还有更多功能和细节可在JDK文档中查找和学习。