Java基础-----Date类及其相关类(一)

news2025/1/26 15:33:15

请添加图片描述

文章目录

  • 1. Date类
    • 1.1 简介
    • 1.2 构造方法
    • 1.3 主要方法
  • 2. DateFormat 类
    • 2.1 简介
    • 2.2 实例化方式一:通过静态方法的调用
    • 2.2 实例化方式二:通过创建子类对象
  • 3. Calendar类
  • 4. GregorianCalendar

1. Date类

1.1 简介

java.util.Date:表示指定的时间信息,不支持国际化

现在这个类的许多方法已经过时,一旦进入到多线程处理时,Date类就会出现许多问题,所以很多时候我们不太使用这个类,但是我们还是简单学习了解一下。

在这里插入图片描述

从上图中我们可以看到,Date类中的许多方法已经被弃用,下面我们来学习一下常见的方法。

1.2 构造方法

  • new Date():当前系统日期和时间
  • new Date(long):给定日期和时间
        Date date=new Date();
        System.out.println(date);
        System.out.println(date.toLocaleString());
        System.out.println(date.toString());

运行结果:
在这里插入图片描述

可以看到,date和date.toString()输出结果是一样的,但是这种日期格式不是很好看。后面会详细学习其他日期解析格式方法。

1.3 主要方法

  • after(Date):判断当前日期对象是否在给定日期对象之后

  • before(Date):判断当前日期对象是否在给定日期对象之前

  • equals(Object):判断两个日期是否相等

  • compareTo(Date):比较两个日期的顺序,如果当前日期对象大于给定的日期对象,返回正数;如果小于给定的日期对象,返回负数;如果等于给定的日期对象,返回零。

Date date=new Date();//系统当前时间
Date date1=new Date(System.currentTimeMillis()-2000);//2秒之前的时间
Date date2=new Date(System.currentTimeMillis()-2000);//2秒之前的时间
//before
boolean before = date.before(date1);
System.out.println(before);//false
//after
boolean after = date.after(date1);
System.out.println(after);//true
//compareTo
int i = date1.compareTo(date2);
System.out.println(i);//0
int i1 = date.compareTo(date1);
System.out.println(i1);//1
int i2 = date1.compareTo(date);
System.out.println(i2);//-1
//equals
boolean equals = date1.equals(date2);
System.out.println(equals);//true

2. DateFormat 类

2.1 简介

  • DateFormat 类是对日期类进行格式化和解析
  • DateFormat 类本身是一个抽象类

在这里插入图片描述

  • DateFormat 类实例化的方式:
    • 一种是通过静态方法的调用
    • 一种是通过创建子类对象

2.2 实例化方式一:通过静态方法的调用

通过静态方法的调用,处理的是长日期和长时间类型

  • getDateInstance():只显示日期(如:2022年9月1日)

  • getTimeInstance():只显示时间(如:12:40:53)

  • getDateTimeInstance():日期和时间都显示

		Date date=new Date();

        DateFormat f=DateFormat.getDateInstance();
        String s = f.format(date);
        System.out.println("s = " + s);//s = 2023年12月2日

        f=DateFormat.getTimeInstance();
        String s1 = f.format(date);
        System.out.println("s1 = " + s1);//s1 = 下午2:05:22

        f=DateFormat.getDateTimeInstance();
        String s2 = f.format(date);
        System.out.println("s2 = " + s2);//s2 = 2023年12月2日 下午2:05:22

2.2 实例化方式二:通过创建子类对象

  • SimpleDateFormat类继承自DateFormat类。
    在这里插入图片描述
  • 创建SimpleDateFormat对象,处理的是短日期(如:2022/9/1)和短时间(如:12:40)类型

我们可以自定义解析的格式:

字母日期或时间元素
y
M月份
d月份中的天数
E星期中的天数
H小时数(24小时制)
h小时数(12小时制)
m分钟数
s秒数
aAm/Pm 上午/下午标记
S毫秒数
//创建子类对象
        Date date=new Date();
        SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
        String s = sf.format(date);
        System.out.println("s = " + s);//s = 2023-12-02

        sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String s1 = sf.format(date);
        System.out.println("s1 = " + s1);//s1 = 2023-12-02 02:09:59

        sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String s2 = sf.format(date);
        System.out.println("s2 = " + s2);//s2 = 2023-12-02 14:09:59

方法:

  • format(Date):将Date类型格式化成字符串
  • parse(String):将字符串解析成Date类型
String str="1999-12-12";
        Date date=new SimpleDateFormat("yyyy-MM-dd").parse(str);
        System.out.println("date = " + date);//date = Sun Dec 12 00:00:00 CST 1999

扩展一下:我们电脑中的日期类型

在这里插入图片描述

3. Calendar类

这个类的使用频率比Date高。

Calendar是一个抽象类

Calendar获取年、月、日、星期等方法

//获取实例对象
Calendar calendar=Calendar.getInstance();
//获取年份  月份  日期
int year = calendar.get(Calendar.YEAR);
System.out.println("year = " + year);

//这个月份的取值是0-11的
int month = calendar.get(Calendar.MONTH)+1;
System.out.println("month = " + month);

int date = calendar.get(Calendar.DATE);
System.out.println("date = " + date);

//一周的第几天,从周日开始是第1天
int week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("week = " + week);

//一个月的第几天
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("day = " + day);

//一年的第几天
int dy = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("dy = " + dy);

//12小时制的
int hour = calendar.get(Calendar.HOUR);
System.out.println("hour = " + hour);

//24小时制的
int hour1 = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println("hour1 = " + hour1);
int minute = calendar.get(Calendar.MINUTE);
System.out.println("minute = " + minute);
int second = calendar.get(Calendar.SECOND);
System.out.println("second = " + second);

Calendar自己设置时间:

//Calendar自己设置时间
        Calendar calendar=Calendar.getInstance();
        calendar.set(2023,Calendar.AUGUST,8);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        System.out.println("year = " + year);
        System.out.println("month = " + (month+1));

Date 转Calender:

//Date 转Calender
        Calendar calendar=Calendar.getInstance();
        Date date = DateUtil.parse("yyyy-MM-dd HH:mm:ss", "2023-8-8 15:30:54");
        calendar.setTime(date);
        int year = calendar.get(Calendar.YEAR);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println("year = " + year);
        System.out.println("hour = " + hour);

Calendar 转 Date:

  //Calendar 转 Date
        Calendar calendar=Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(DateUtil.getAllDateTime(date));

4. GregorianCalendar

格里高利历是公历的标准名称,教皇格里高利历十三世于1582年颁布。公历纪元,又称“西元”。

儒略历:公元前45年1月1日起执行的一种历法,一年12个月,大小月交替,四年一闰,平年365日,闰年366天。年平均长度365.25天。

1949年9月27日,中国政协通过,采用国际社会通用的西历和西元作业历法和纪年。

四年一闰,百年不闰,四百年一大闰。

年均长度365天5小时49分112秒,按此计算方式,3000年左右误差一天。

判断闰年的方法isLeapYear(int),返回一个boolean值,1582年后,计算方式不同。

public class Test1 {
    public static void main(String[] args) {
        GregorianCalendar calendar=new GregorianCalendar();
        boolean leapYear = calendar.isLeapYear(2000);//判断是否是闰年
        System.out.println("leapYear = " + leapYear);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

市面上的AR眼镜:优缺点分析

AR眼镜是近年来备受关注的科技产品之一。它通过将虚拟信息叠加到现实世界中,为用户提供全新的视觉体验。目前,市面上的AR眼镜主要分为两类:消费级AR眼镜和企业级AR眼镜。 消费级AR眼镜 消费级AR眼镜的特点是轻便、时尚、易于佩戴&#xff0…

DOM 事件的注册和移除

前端面试大全DOM 事件的注册和移除 🌟经典真题 🌟DOM 注册事件 HTML 元素中注册事件 DOM0 级方式注册事件 DOM2 级方式注册事件 🌟DOM 移除事件 🌟真题解答 🌟总结 🌟经典真题 总结一下 DOM 中如何…

【STM32】TIM定时器

第一部分:定时器基本定时的功能; 第二部分:定时器的输出比较功能; 第三部分:定时器输入捕获的功能; 第四部分:定时器的编码接口。 1 TIM简介 TIM(Timer)定时器&#…

计算机网络TCP篇②

一、TCP 重传、滑动窗口、流量控制、拥塞控制 1.1、重传机制 在 TCP 中,当发送端的数据达到接受主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但是在复杂的网络中,并一定能顺利正常的进行数据传输,&…

从零开始搭建博客网站-----登陆页面

登录按钮以及背景图设置 安装element-plus和css插件 npm install element-plus --save npm install sass --save npm install sass-loader --save在main.js里引用 寻找背景图存入assets文件下,并且在Login.vue里设置背景图和登录按钮 设置的背景图的大小没有起…

avue-tabs设置默认选中的tab

文章目录 一、问题二、解决三、最后 一、问题 最近在用avue这个UI框架来开发页面,有用到avue-tabs这个tab切换组件。结果竟然发现element-ui中el-tabs的v-model在avue-tabs中竟然是没有用的,无法设置默认选中哪个tab。avue这个基于element-ui开发的UI框…

〖大前端 - 基础入门三大核心之JS篇㊹〗- DOM事件委托

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

【Erlang进阶学习】2、匿名函数

受到其它一些函数式编程开发语言的影响,在Erlang语言中,将函数作为一个对象,赋予其“变量”的属性,即为我们的匿名函数 或 简称 fun,它具有以下特性: (匿名函数:不是定义在Erlang模…

逻辑回归与正则化 逻辑回归、激活函数及其代价函数

逻辑回归、激活函数及其代价函数 线性回归的可行性 对分类算法,其输出结果y只有两种结果{0,1},分别表示负类和正类,代表没有目标和有目标。 在这种情况下,如果用传统的方法以线性拟合 ( h θ ( x ) θ T…

Android HCI日志分析案例2

案例1--蓝牙音箱电量用完后,配对一直失败,提示PIN码不正确 基于MTK平台,通过MTKLogger开启保存HCI日志 问题定位分析 Android日志查看logcat 搜索到关键log 01-20 10:07:55.403760 978 1075 V bt_stack: [VERBOSE2:btm_inq.cc(2032)] …

Linux 多线程(C语言) 备查

基础 1)线程在运行态和就绪态不停的切换。 2)每个线程都有自己的栈区和寄存器 1)进程是资源分配的最小单位,线程是操作系统调度执行的最小单位 2)线程的上下文切换的速度比进程快得多 3)从应用程序A中启用应…

flink源码分析之功能组件(四)-slot管理组件I

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics&…

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.参考…

【每日一题】拼车+【差分数组】

文章目录 Tag题目来源解题思路方法一:差分 写在最后 Tag 【差分数组】【数组】【2023-12-02】 题目来源 1094. 拼车 解题思路 本题朴素的解题思路是统计题目中提到的每一个站点的车上人数,如果某个站点的车上人数大于车上的座位数直接返回 false&…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…

Leetcode—1094.拼车【中等】

2023每日刷题&#xff08;四十七&#xff09; Leetcode—1094.拼车 模拟实现代码 bool carPooling(int** trips, int tripsSize, int* tripsColSize, int capacity) {int arr[1003] {0};int numPassenger 0, fromidx 0, toidx 0;for(int i 0; i < tripsSize; i) {num…

力扣66. 加一

文章目录 力扣66. 加一示例代码实现总结收获 力扣66. 加一 示例 代码实现 class Solution {public int[] plusOne(int[] digits) {int ndigits.length;for(int in-1;i>0;i--){if(digits[i]!9){digits[i];for(int ji1;j<n;j){digits[j]0;}return digits;}}int[] resnew i…

爬虫学习(一)

文章目录 文件目录结构打开文件操作 爬取网页的理解尝试 文件目录结构 打开文件操作 爬取网页的理解尝试 这个放回值为请求正常

人工智能中的模型评估

1 概述 1.1 定义 人工智能&#xff08;AI&#xff09;模型评估是一个关键的过程&#xff0c;用于确定模型在特定任务上的性能和有效性。这个过程涉及使用各种技术和指标来衡量模型的准确度、可靠性、泛化能力以及其他重要特性。在不同的应用场景中&#xff0c;模型评估的具体…

OpenSSH 漏洞修复升级最新版本

Centos7系统ssh默认版本一般是OpenSSH7.4左右&#xff0c;低版本是有漏洞的而且是高危漏洞&#xff0c;在软件交付和安全扫描上是过不了关的&#xff0c;一般情况需要升级OpenSSH的最新版本 今天详细说下升级最新版本的处理过程&#xff08;认真看会发现操作很简单&#xff0c…