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

请添加图片描述

文章目录

  • 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:22f=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-02sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String s1 = sf.format(date);System.out.println("s1 = " + s1);//s1 = 2023-12-02 02:09:59sf=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 转CalenderCalendar 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 转 DateCalendar 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.mzph.cn/news/192785.shtml

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

相关文章

vivado实现分析与收敛技巧7-布局规划

关于布局规划 布局规划有助于设计满足时序要求。当设计难以始终如一满足时序要求或者从未满足时序要求时 , AMD 建议您执行布局规划。如果您与设计团队协作并且协作过程中一致性至关重要, 那么布局规划同样可以发挥作用。布局规划可通过减少平均布线延…

Redis-安装、配置和修改配置文件、以及在Ubuntu和CentOS上设置Redis服务的开机启动和防火墙设置,以及客户端连接。

目录 1. Redis简介 2. 离线安装 2.1 准备工作 2.2 解压、安装 2.3 修改配置文件 2.4 redis服务与关闭 2.5 redis服务的开机启动 2.5.1 Ubuntu上的配置 2.5.2 centos上的配置 3. 在线安装 4. 设置防火墙 5. 客户端连接 1. Redis简介 Redis 是完全开源免费的&#x…

鼠标点击效果.html(网上收集6)

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>鼠标点击</title> </head><body> <script>(function () {var a_idx 0;window.onclick function (event) {var a new Array(…

【Python从入门到进阶】43.验证码识别工具结合requests的使用

接上篇《42、使用requests的Cookie登录古诗文网站》 上一篇我们介绍了如何利用requests的Cookie登录古诗文网。本篇我们来学习如何使用验证码识别工具进行登录验证的自动识别。 一、图片验证码识别过程及手段 上一篇我们通过requests的session方法&#xff0c;带着原网页登录…

人工智能 - 人脸识别:发展历史、技术全解与实战

目录 一、人脸识别技术的发展历程早期探索&#xff1a;20世纪60至80年代技术价值点&#xff1a; 自动化与算法化&#xff1a;20世纪90年代技术价值点&#xff1a; 深度学习的革命&#xff1a;21世纪初至今技术价值点&#xff1a; 二、几何特征方法详解与实战几何特征方法的原理…

python安装与配置:在centos上使用shell脚本一键安装

介绍 Python是一种功能强大且广泛使用的编程语言&#xff0c;但在某些情况下&#xff0c;您可能需要安装和配置特定版本的Python。本教程将向您展示如何使用一个Shell脚本自动完成这个过程&#xff0c;以便您可以快速开始使用Python 3。 使用shell自动化安装教程 1. 复制脚本…

51单片机项目(19)——基于51单片机的传送带产品计数器

1.功能描述 应用背景: 某生产线的传送带上不断地有产品单向传送&#xff0c;传送时会通过光电传感器产生方波信号&#xff0c;将该信号(可以采用方波发生器来模拟该信号)直接传送给51单片机&#xff0c;利用计数器0计量产品(方波信号)的个数&#xff0c;利用.定时器1产…

Python海绵宝宝

目录 系列文章 写在前面 海绵宝宝 写在后面 系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.cs…

leetcode 209. 长度最小的子数组(优质解法)

代码&#xff1a; //时间复杂度 O(N) ,空间复杂度 O(1) class Solution {//采用滑动窗口的方法解决public int minSubArrayLen(int target, int[] nums) {int numsLengthnums.length;int minLengthInteger.MAX_VALUE;int left0;int right0;int sum0;while (right<numsLengt…

【SpringBoot】讲清楚日志文件lombok

文章目录 前言一、日志是什么&#xff1f;二、⽇志怎么⽤&#xff1f;三.自定义打印日志3.1在程序中得到日志对象3.2使用日志打印对象 四.⽇志级别4.1日志级别有什么用4.2 ⽇志级别的分类与使⽤ 五.日志持久化六.lombok6.1添加lobok依赖注意&#xff1a;使⽤ Slf4j 注解&#x…

Linux 多线程(C语言) 备查

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

Linux系列-1 Linux启动流程——init与systemd进程

背景&#xff1a; 最近对所有项目完成了一个切换&#xff0c;服务管理方式由&#xff1a; init-> systemd。对相关知识进行总结一下。 1.启动流程 服务器的整体启动流程如下图所示&#xff1a; POST&#xff1a; 计算机通电后进行POST( Power-On Self-Test )加电自检&am…

linux之buildroot(3)配置软件包

Linux之buildroot(3)配置软件包 Author&#xff1a;Onceday Date&#xff1a;2023年11月30日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: buildroot编译框架_Once_day的博客-CSDN博客。 参考文档&#xff1a; Buildroot - Making Embedded Linux Easymdev.t…

Hdoop学习笔记(HDP)-Part.17 安装Spark2

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

canvas 轮廓路径提取效果

前言 微信公众号&#xff1a;前端不只是切图 轮廓 对内容做border效果&#xff0c;可以先看下代码运行的效果 内容是黑线构成的五角星&#xff0c;其轮廓就是红线的部分&#xff0c;本文主要介绍如何在canvas中实现这种效果 Marching Square 这里运用到的是marching square算法…

鸿蒙是Android套壳么,当然不是,ArkTS还是很有意思的

前段时间看新闻&#xff0c;说是明年开始鸿蒙就要和andorid脱钩了。 大概就是这样的&#xff1a; 看到这个&#xff0c;我兴趣就来了。我有个华为P30&#xff0c;升级过鸿蒙系统&#xff0c;用起来也没啥变化&#xff0c;兼容andorid应用&#xff0c;然后就是开机去掉了Powere…

数据库表的管理

表的基本概念 表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似&#xff0c;都是 按行和列的格式组织的。每行代表一条唯一的记录&#xff0c;每列代表记录中的一个字段。例如&#xff0c;在包含公 司员工信息的表中&#xff0c;每行代表一名员工…

19.字符串——查找三个字符串中的最大字符串(打擂台)

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 查找三个字符串中的最大字符串 二、题目分析 打擂台 三、解题 程序运行代码 #include<…

从零开始:PHP实现阿里云直播的简单方法!

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前&#xff0c;首先需要在阿里云控制台中创建直播应用&#xff0c;然后获取推流地址和播放地址。 推流地址一般格式为&#xff1a; rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

如何使用手机制作证件照

1、打开vx搜索小&#x1f34a;x名称&#xff1a;标准证件照免冠照 2、选择你需要的证件照尺寸类型 3&#xff0e;选择手机照片生活照或者点击开始拍摄&#xff08;建议纯色的墙面好换底色&#xff09; 4&#xff0e;选择背景颜色&#xff0c;红底&#xff0c;蓝底奉背景颜色随你…