Java中的日期时间类实例详解(Date、Calendar、DateFormat)

 更新时间:2023年11月24日 08:59:15   作者:锦湘  
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理,这篇文章主要介绍了Java中的日期时间类详解(Date、Calendar、DateFormat),需要的朋友可以参考下

⭐ 前言 ⭐

本篇文章主要介绍Java时间的几种常见方法以及部分理论知识

⭐什么是Date日期类型?

在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。 在相应的方法Date被弃用。

⭐Date日期类型

1、基本概念

在类的所有方法Date接受或返回年,月,日,小时,分钟和秒值,可以分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00GMT。

  • Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
  • Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数。

这两个构造方法的使用示例如下:

import java.util.Date;
public class PhoenTest {
    /**
     * 执行入口
     * */
    public static void main(String[] args) {
        Date date1 = new Date();    // 调用无参数构造函数
        System.out.println(date1.toString());    // 输出:Thu Nov 23 10:53:51 CST 2023
        Date date2 = new Date(23000);    // 调用含有一个long类型参数的构造函数
        System.out.println(date2);    // 输出:Thu Jan 01 08:00:23 CST 1970
    }
}

Date 类的无参数构造方法获取的是系统当前的时间,显示的顺序为星期、月、日、小时、分、秒、年。

2、常见方法

方法描述
boolean after(Date when)判断此日期是否在指定日期之后

boolean before(Date when)

判断此日期是否在指定日期之前
int compareTo(Date anotherDate) 比较两个日期的顺序
boolean equals(Object obj) 比较两个日期的相等性
long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数
String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

 下面使用实例来具体演示 Date 类的使用:

import java.util.Date;
import java.util.Scanner;
 
public class Test11 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要做的事情:");
        String title = input.next();
        Date date1 = new Date(); // 获取当前日期
        System.out.println("[" + title + "] 这件事发生时间为:" + date1);
        try {
            Thread.sleep(60000);// 暂停 1 分钟
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Date date2 = new Date();
        System.out.println("现在时间为:" + date2);
        if (date2.before(date1)) {
            System.out.println("你还有 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒需要去完成【" + title + "】这件事!");
        } else {
            System.out.println("【" + title + "】事情已经过去了 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒");
        }
    }
}

⭐Calendar日历类型

1、基本概念

Calendar 是一个抽象类, 无法通过直接实例化得到对象。因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化。

与其他区域设置敏感的类一样, Calendar提供了一种类方法“getInstance”,用于获取此类型的一般有用的对象。 Calendar的“getInstance”方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:

Calendar c1 = Calendar.getInstance();

2、常见方法

// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

Calendar对象可以产生实现特定语言和日历风格的日期时间格式化所需的所有日历字段值(例如日语 - 公历)。 Calendar定义某些日历字段返回的值的范围及其含义。 例如,日历系统第一个月的值为MONTH == JANUARY为所有日历。 其他值由具体的子类定义,如ERA 。 有关详细信息,请参阅博客Calendar日历类型常见方法(必看!!)-CSDN博客,对Calendar进行深入技术探讨与了解!

⭐DateFormat类

1、基本概念

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,从Date对象转换为String对象。(format)
  • 解析:按照指定的格式,从String对象转换为Date对象。(parse)

2、常见方法

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

public SimpleDateFormat(String pattern):
用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

参数pattern是一个字符串,代表日期时间的自定义格式。

格式规则

常用的格式规则:

标识字母(区分大小写)含义
y
M
d
H
m
s

创建SimpleDateFormat对象的代码如下:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Phoen {
    @Test
    public void Test(){
          //对应的日期格式为:2023-11-11 23:10:30(区分大小写)
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }   
}

DateFormat类常用方法

1==)public String format(Date date):将Date对象格式化为字符串。

format方法的代码如下:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 把Date对象转换成String
*/
public class Demo03DateFormatMethod {
    public static void main(String[] args) {
        Date date = new Date();
        // 创建日期格式化对象,在获取格式化对象时可以指定风格
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
        String str = df.format(date);
        System.out.println(str); // 2020年09月19日
    }
}

2==)public Date parse(String source):将字符串解析为Date对象。

parse方法的代码如下:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 把String转换成Date对象
*/
public class Demo04DateFormatMethod {
    public static void main(String[] args) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
        String str = "2023年11月11日";
        Date date = df.parse(str);
        System.out.println(date); // Tue Dec 11 00:00:00 CST 2023
    }
}

到此这篇关于Java中的日期时间类详解(Date、Calendar、DateFormat)的文章就介绍到这了,更多相关Java日期时间类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用EasyPoi完成复杂一对多excel表格导出功能全过程

    使用EasyPoi完成复杂一对多excel表格导出功能全过程

    这篇文章主要介绍了使用EasyPoi完成复杂一对多excel表格导出功能全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 使用Spring AOP实现MySQL数据库读写分离案例分析(附demo)

    使用Spring AOP实现MySQL数据库读写分离案例分析(附demo)

    分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,这篇文章主要介绍了使用Spring AOP实现MySQL数据库读写分离案例分析(附demo),有兴趣的可以了解一下。
    2017-01-01
  • Java容器ArrayList原理解析

    Java容器ArrayList原理解析

    这篇文章主要介绍了Java容器ArrayList原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Idea 编译并运行 Spark 3.1.1 源码的方法

    Idea 编译并运行 Spark 3.1.1 源码的方法

    这篇文章主要介绍了Idea 编译并运行 Spark 3.1.1源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • SpringCloud 微服务数据权限控制的实现

    SpringCloud 微服务数据权限控制的实现

    这篇文章主要介绍的是权限控制的数据权限层面,意思是控制可访问数据资源的数量,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • java实现简单验证码生成

    java实现简单验证码生成

    这篇文章主要介绍了java实现简单验证码生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 详解Nacos中注册中心和配置中心的实现

    详解Nacos中注册中心和配置中心的实现

    Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心,我们今天来了解和实现一下二者
    2022-08-08
  • 解决springboot responseentity<string>乱码问题

    解决springboot responseentity<string>乱码问题

    这篇文章主要介绍了解决springboot responseentity<string>乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 图文讲解Java中实现quickSort快速排序算法的方法

    图文讲解Java中实现quickSort快速排序算法的方法

    这篇文章主要介绍了Java中实现quickSort快速排序算法的方法,文章最后还介绍了一种单向扫描的实现方法,需要的朋友可以参考下
    2016-05-05
  • Java WebService 简单实例(附实例代码)

    Java WebService 简单实例(附实例代码)

    本篇文章主要介绍了Java WebService 简单实例(附实例代码), Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。有兴趣的可以了解一下
    2017-01-01

最新评论