Java中日期时间如何表示?Java.util.Date类和Java8引入新的Java.time包有何区别?

Java中日期时间如何表示?

基本概念:

​ 早期Java1.0中就存在了的Java.util.Date类,用来处理日期和时间的类。但是在Java8中,引入了新的日期和时间API,也就是Java.time包,它提供了更强大、更易用的日期和时间处理功能。


我们先从Date类开始学习起,要想使用Date类下的方法,那么我们就需要初始化Date对象.

Java中提供了俩个构造函数来实例化Date对象。

1.默认的无参构造器
Date()
2.接受一个参数的有参构造器,该参数是从 1970 年 1 月 1 日起的毫秒数。
Date(long millisec)

实例化对象后就可以使用以下的Date类常用方法以及示例

  1. toString():将 Date` 对象转换为字符串表示。

    import java.util.Date;
    
    Date date = new Date();
    String dateString = date.toString();
    System.out.println("日期时间的字符串表示:" + dateString);
    

    输出:

    日期时间的字符串表示:Fri Jul 23 05:45:11 CST 2023
    
  2. getTime():获取自1970年1月1日以来的毫秒数。

    import java.util.Date;
    
    Date date = new Date();
    long timestamp = date.getTime();
    System.out.println("日期时间的毫秒数:" + timestamp);
    

    输出:

    日期时间的毫秒数:1678499111764
    
  3. equals():比较两个 Date 对象是否相等。

    import java.util.Date;
    
    Date date1 = new Date();
    Date date2 = new Date();
    
    boolean isEqual = date1.equals(date2);
    System.out.println("两个日期是否相等:" + isEqual);
    

    输出:

    两个日期是否相等:false
    
  4. before()after():比较一个 Date 对象是否在另一个 Date 对象之前或之后。

import java.util.Date;

Date date1 = new Date();  // 当前时间
Date date2 = new Date(1234567890000L);  // 指定时间

boolean isBefore = date1.before(date2);
boolean isAfter = date1.after(date2);
System.out.println("date1 是否在 date2 之前:" + isBefore);
System.out.println("date1 是否在 date2 之后:" + isAfter);

输出:

date1 是否在 date2 之前:false
date1 是否在 date2 之后:true

以上是Date类常用的方法,并且使用例子,除了在掌握这些办法之外,我们还需要认识到,

java.util.Date 类存在一些问题,它的设计够不安全特别是在多线程环境下,不推荐直接使用。**并且其年份起始于1900年,月份从0开始计数等等。**在 Java 8 及更高版本中,推荐使用 java.time 包中的日期和时间类来替代 Date 类,以获得更强大和安全的功能。


Java8中引入的新特性-新的Date-Time API加强对日期和时间的处理(Java高级编程中会学习到,建议主学这个更方便使用)

基本概念:

java.time 包中,引入了许多新的类,如 InstantLocalDateLocalTimeLocalDateTimeZonedDateTime 等,它们提供了更灵活和易于操作的日期和时间功能。这些新的日期和时间类使得处理日期和时间更加直观和简洁,并且修复了一些旧的 API 存在的问题。

java.time 是 Java 8 引入的包含日期和时间 API 的包。它提供了一组用于处理日期、时间、时间间隔和时区的类。

以下是 java.time 包中一些常用的类:

  • LocalDate:表示处理日期(年、月、日)的类。
  • LocalTime:表示处理时间(小时、分钟、秒和纳秒)的类。
  • LocalDateTime:表示同时处理日期和时间的类。
  • ZonedDateTime:表示带有时区信息的日期和时间的类。
  • Instant:表示时间线上的一个瞬时点。
  • Duration:表示两个时间点之间的时间间隔。
  • Period:表示两个日期之间的时间间隔。
  • DateTimeFormatter:用于格式化和解析日期和时间的类。
  • ZoneId:表示时区的标识符。
  • ZoneOffset:表示相对于协调世界时(UTC)的固定偏移量。

这些类提供了丰富的功能,可以进行日期和时间的创建、操作、格式化、解析等操作,并且尽量避免了之前 java.util.Date 类的一些问题。使用 java.time 包可以更加方便、直观地处理日期和时间。

1.获取当前日期,并使用将其格式化为指定的字符串表示形式。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String formattedDate = date.format(formatter);

        System.out.println("当前日期:" + formattedDate);
    }
}

输出:

当前日期:2023-07-23

这个示例演示了如何使用 java.time.LocalDate 类获取当前日期,并使用 java.time.format.DateTimeFormatter 类将其格式化为指定的字符串表示形式。


2.获取当前日期和时间:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class CurrentDateTimeExample {
    public static void main(String[] args) {
        LocalDate currentDate = LocalDate.now();
        LocalTime currentTime = LocalTime.now();
        LocalDateTime currentDateTime = LocalDateTime.now();

        System.out.println("当前日期:" + currentDate);
        System.out.println("当前时间:" + currentTime);
        System.out.println("当前日期和时间:" + currentDateTime);
    }
}

输出:

当前日期:2023-07-23
当前时间:07:25:08.123456789
当前日期和时间:2023-07-23T07:25:08.123456789

在这个例子中,我们使用 now() 方法从系统时钟获取了当前的日期、时间和日期时间。


3.创建特定日期和时间:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class DateTimeCreationExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2023, 7, 23);
        LocalTime time = LocalTime.of(10, 30, 45);
        LocalDateTime dateTime = LocalDateTime.of(date, time);

        System.out.println("特定日期:" + date);
        System.out.println("特定时间:" + time);
        System.out.println("特定日期和时间:" + dateTime);
    }
}

输出:

特定日期:2023-07-23
特定时间:10:30:45
特定日期和时间:2023-07-23T10:30:45

​ 在这个例子中,我们使用 of() 方法创建了特定的日期、时间和日期时间。of() 方法是 java.time.LocalDatejava.time.LocalTimejava.time.LocalDateTime 类中用于创建实例的静态方法,它们接受不同的参数来表示日期、时间和日期时间的各个部分。使用这些方法可以方便地创建指定日期、时间或日期时间的对象实例。

这些例子展示了 java.time 包的一些常见用法,包括获取当前日期和时间以及创建特定的日期、时间和日期时间。使用 java.time,我们可以更轻松地处理日期和时间,提供更好的可读性和易用性。


结尾语:记录于2023年7月23号15时30分,以上仅为个人在Java菜鸟教程DateJava8新特性的学习过程中遇到的问题,还有记录的个人想法,有错误欢迎指出,感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stevedash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值