您的位置:

Java Date

Java 日期(Date)是在JDK 1.0中引入的,它是用于处理日期和时间的类。 Date类的一些缺点在Java 8中得到了解决。 在本文中,我们将探讨Java Date类及其方法提供的功能和用法,以及Java 8中的日期API。(以下以Java 8为基础进行阐述)

一、Date类的基本用法

在Java中,日期类主要有两个:java.util.Date和java.sql.Date。java.util.Date可以保存精确到毫秒的时间信息,而java.sql.Date只能精确到日期,而且只能够保存SQL DATE格式的时间信息。 在新版本JDK中提供了新的日期时间API类,因此java.util.Date已经逐渐被废弃。但是在实际开发中,仍然可以使用Java 8之前的Java.util.Date类。

以下代码演示了如何通过Date类获取当前日期和时间:

import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        //获取当前日期和时间
        Date currentDate = new Date();
        System.out.println("当前日期和时间为: " + currentDate);
    }
}

运行结果为:

当前日期和时间为: Tue Aug 24 13:03:23 CST 2021

可以看到,Java Date类的toString()方法返回包含当前日期和时间的字符串。

除了获取当前日期和时间外,我们还可以使用Date类的其他方法获取特定时间的日期和时间,例如:

import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        Date currentDate = new Date();

        //获取1970年1月1日00:00:00 GMT 以来的毫秒数
        long timeStamp = currentDate.getTime();
        System.out.println("Timestamp(1970年1月1日00:00:00 GMT以来的毫秒数):" + timeStamp);

        //使用时间戳创建一个Date对象
        Date newDate = new Date(timeStamp);
        System.out.println("创建的新日期和时间为:" + newDate);
    }
}

运行结果为:

Timestamp(1970年1月1日00:00:00 GMT以来的毫秒数):1629793666503
创建的新日期和时间为:Tue Aug 24 13:47:46 CST 2021

上述代码中,我们使用Date类的getTime()方法获取从1970年1月1日00:00:00 GMT以来的毫秒数。 然后,我们可以使用时间戳创建一个Date对象,这可以通过构造函数实现。

二、使用SimpleDateFormat日期格式化

SimpleDateFormat是Java日期格式化的一个实用类。 它可以将Java中的Date对象转换为字符串,反之亦然。使用SimpleDateFormat的一个常见用途就是将日期格式化为特定的字符串。

以下代码演示了如何使用SimpleDateFormat格式化日期:

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

public class DateFormatExample {
    public static void main(String[] args) {
        //日期格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date currentDate = new Date();

        //将日期格式化为字符串
        String formattedDate = sdf.format(currentDate);
        System.out.println(formattedDate);
    }
}

运行结果为:

2021-08-24 14:11:21

上述代码中,我们创建了一个SimpleDateFormat对象,它定义了如何格式化日期。然后,我们使用它将Date对象转换为格式化的字符串。

三、使用LocalDateTime和DateTimeFormatter

Java 8引入了新的日期API。 这个API主要由以下几个类和接口组成:LocalDate,LocalTime,LocalDateTime,Instant,Duration,Period和DateTimeFormatter。

在JavaScript中,可以使用Moment.js库来处理日期。 在Java 8中的新日期API提供了与Moment.js类似的功能,让我们更容易地处理日期。

以下代码演示了如何使用LocalDateTime和DateTimeFormatter格式化日期:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        //日期时间格式化对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime currentDateTime = LocalDateTime.now();

        //将日期时间格式化为字符串
        String formattedDateTime = currentDateTime.format(formatter);
        System.out.println(formattedDateTime);
    }
}

运行结果为:

2021-08-24 14:32:34

可以看到,我们使用DateTimeFormatter.ofPattern()方法创建了一个DateTimeFormatter对象,并定义了格式化模板。 然后,我们使用它将LocalDateTime对象转换为格式化的字符串。

四、处理日期和时间差异

Java日期API也提供了一些方法来处理日期之间的差异。 下面是使用Java日期API计算两个日期之间差异的示例:

import java.time.LocalDate;
import java.time.Month;
import java.time.Period;

public class DateDifferencesExample {
    public static void main(String[] args) {
        //创建两个LocalDate对象
        LocalDate date1 = LocalDate.of(2021, Month.JULY, 9);
        LocalDate date2 = LocalDate.of(2021, Month.AUGUST, 24);

        //计算日期差异
        Period period = Period.between(date1, date2);

        //输出结果
        System.out.printf("日期差异: %d years, %d months, and %d days old", 
            period.getYears(), period.getMonths(), period.getDays());
    }
}

运行结果为:

日期差异: 0 years, 1 months, and 15 days old

上述代码中,我们使用Period.between()方法计算两个LocalDate对象之间的差异。 然后,我们输出结果,显示日期之间的差异。

五、参考资料

1. Oracle官方文档:https://docs.oracle.com/javase/8/docs/api/index.html

2. Java Tutorials:https://docs.oracle.com/javase/tutorial/datetime/index.html

3. SimpleDateFormat文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html

4. DateTimeFormatter文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html

以上就是关于Java日期(Date)的详细解析和用法。 在实际开发中,要特别注意Java.util.Date和Java 8新日期API之间的区别和使用方法。