32、Java高级特性——日期操作类、Date类、SimpleDateFormat类、Calendar类

news2024/10/6 5:54:01

目录

一、日期操作类

二、Date类

1、Date类中的构造方法

2、获取系统当前时间

三、SimpleDateFormat类

1、SimpleDateFormat类中的构造方法 

2、format(Date date,StringBuffer toAppendTo,FieldPosition pos)方法

四、Calendar类 

1、Calendar类中的构造方法

2、Calendar类中的字段名 

3、Calendar类中的常用方法及代码

3.1 getInstance()方法 

3.2 get()方法

4、参考代码


一、日期操作类

(1)java.util包中提供的和日期相关的类常见有:

              Date类        Calendar类        DateFormat类        SimpleDateFormat

(2)在JDK 1.1之间,Date允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的API不易于实现国际化。从JDK 1.1开始,使用Calendar类实现日趋和时间字段之间的转化,使用DataFormat类来格式化和解析日期字符串。

二、Date类

java.util.Date类:表示日期和时间

        提供操作日期和时间各组成部分的方法,类 Date 表示特定的瞬间,精确到毫秒

1、Date类中的构造方法

 只需要看一下无参构造方法就行了,其他的已经过时了 

2、获取系统当前时间

public static void main(String[] args) {
		//创建Date类对象
		Date date = new Date();
		
		//获取系统当前时间
		System.out.println("系统当前时间:"+date);
	}

    

三、SimpleDateFormat类

(1)SimpleDateFormat类是java.text包中的类,是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 

(2)SimpleDateFprmat类使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat中的getTimeInstance、getDateInstance或getDateTimeInstance来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用applyPattern方法来修改格式模式。

 

1、SimpleDateFormat类中的构造方法 

2、format(Date date,StringBuffer toAppendTo,FieldPosition pos)方法

将给定的Date格式化为日期/时间字符串,并将结果添加到给定的StringBuffer

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

public class SimpleDateFormatDemo01 {
	public static void main(String[] args) {
		//创建Date类对象
		Date date = new Date();
		
		//创建SimpleDateFormat类对象,设置格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E 是今年的第D天");
		
		String time1 = sdf.format(date);
		System.out.println("现在的时间是:"+time1);
		
	}

}

 

四、Calendar类 

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

1、Calendar类中的构造方法

2、Calendar类中的字段名 

Calendar类中的字段都是静态的,可通过类名直接调用。

 

3、Calendar类中的常用方法及代码

Calendar类是一个抽象类,是不能创建对象的,

所以可以通过Calendar类中的getInstance()方法获取一个当前日历,把它赋值给一个Calendar类的引用,可通过引用变量调用get()方法获取日历中的字段值

3.1 getInstance()方法 

使用默认时区和语言环境获取一个日历

public static void main(String[] args) {
		//直接创建一个Calendar类对象是创建不了的,因为Calendar类是一个抽象类
		
		//getInstance():使用默认时区和语言环境获得一个日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		
	}

控制台输出为:

java.util.GregorianCalendar[time=1670313949634,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=11,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=340,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=5,SECOND=49,MILLISECOND=634,ZONE_OFFSET=28800000,DST_OFFSET=0]

3.2 get()方法

返回日历给定字段的值 

(1)获取年份

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		//获取年份
		int year = cal.get(Calendar.YEAR);
		System.out.println(year);
	}

(2) 获取月份

指示月份的 getset 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。

所以我们要想获取当前的月份需要把获得的日历月份加1

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		//获取月份
		int month = cal.get(Calendar.MONTH)+1;
		System.out.println(month);
	}

(3) 获取日

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		
		//获取日
		int day1 = cal.get(Calendar.DAY_OF_MONTH);//本月的第几天
		System.out.println(day1);
		int day2 = cal.get(Calendar.DAY_OF_WEEK);//本周的第几天(周日是第一天,所以实际周几+1)
		System.out.println(day2);
		int day3 = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);//今天是本月的第几周
		System.out.println(day3);
		int day4 = cal.get(Calendar.DAY_OF_YEAR);//今天是今年的第多少天
		System.out.println(day4);
	}

(4) 获取时

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		
		//获取时
		int hour1 = cal.get(Calendar.HOUR);//十二小时制
		System.out.println(hour1);
		int hour2 = cal.get(Calendar.HOUR_OF_DAY);//现在是一天中的第几个小时(二十四小时制)
		System.out.println(hour2);
	}

(5)获取分

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		//获取分
		int minute = cal.get(Calendar.MINUTE);
		System.out.println(minute);
	}

(6)获取分

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		//获取秒
		int second = cal.get(Calendar.SECOND);
		System.out.println(second);
	}

(7)获取星期几的两种方法

系统默认每周是从周日开始的,周日为每周的第一天,Calendar.DAY_OF_WEEK返回的是本周的第几天,而我们通常表示为"星期二",是字符串类型,我们可以通过以下两种方法实现

第一种方法:switch选择结构

public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		
		//switch分支结构实现输出星期几
		int weekday = cal.get(Calendar.DAY_OF_WEEK);
		String weekDay ="";
		switch(weekday){
		case 1:
			weekDay = "星期日";
			break;
		case 2:
			weekDay ="星期一";
			break;
		case 3:
			weekDay = "星期二";
			break;
		case 4:
			weekDay = "星期三";
			break;
		case 5:
			weekDay = "星期四";
			break;
		case 6:
			weekDay = "星期五";
			break;
		case 7:
			weekDay = "星期六";
		}
		System.out.println("今天是:"+weekDay);
	}

第二种方法:数组 

public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		
		//数组实现输出星期几
		int weekday = cal.get(Calendar.DAY_OF_WEEK);
		String[] weekDay = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; 
		System.out.println("今天是:"+weekDay[weekday]);
		
	}

4、参考代码

public static void main(String[] args) {
		//通过getInstance日历
		Calendar cal = Calendar.getInstance();
		System.out.println(cal);
		
		//get() 方法:返回日历中给定的字段值
		
		//获取年份
		int year = cal.get(Calendar.YEAR);
		System.out.println(year);
		
		//获取月份
		int month = cal.get(Calendar.MONTH)+1;
		System.out.println(month);
		
		//获取日
		int day1 = cal.get(Calendar.DAY_OF_MONTH);//本月的第几天
		System.out.println(day1);
		int day2 = cal.get(Calendar.DAY_OF_WEEK);//本周的第几天(周日是第一天,所以实际周几+1)
		System.out.println(day2);
		int day3 = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);//今天是本月的第几周
		System.out.println(day3);
		int day4 = cal.get(Calendar.DAY_OF_YEAR);//今天是今年的第多少天
		System.out.println(day4);
		
		//获取时
		int hour1 = cal.get(Calendar.HOUR);//十二小时制
		System.out.println(hour1);
		int hour2 = cal.get(Calendar.HOUR_OF_DAY);//现在是一天中的第几个小时(二十四小时制)
		System.out.println(hour2);
		
		//获取分
		int minute = cal.get(Calendar.MINUTE);
		System.out.println(minute);
		
		//获取秒
		int second = cal.get(Calendar.SECOND);
		System.out.println(second);
		
		//获取星期几
		int weekday = cal.get(Calendar.DAY_OF_WEEK);
		System.out.println(weekday);
		String weekDay ="";
		switch(weekday){
		case 1:
			weekDay = "星期日";
			break;
		case 2:
			weekDay ="星期一";
			break;
		case 3:
			weekDay = "星期二";
			break;
		case 4:
			weekDay = "星期三";
			break;
		case 5:
			weekDay = "星期四";
			break;
		case 6:
			weekDay = "星期五";
			break;
		case 7:
			weekDay = "星期六";
		}
		System.out.println("现在是:"+year+"年"+month+"月"+day1+"日\t"+hour2+"点"+minute+"分"+second+"秒\t"+weekDay);
		System.out.println("今天是今年的第"+day4+"天");
		System.out.println("本周是今年的第"+cal.get(Calendar.WEEK_OF_YEAR)+"周");
	}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

[附源码]Python计算机毕业设计SSM家政信息管理平台(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Removing the Bias of Integral Pose Regression 阅读笔记

消除积分姿态回归的偏差 ICCV2021 论文链接 补充材料链接 参考链接 摘要: 尽管姿态估计的回归法更直观,但由于热图法的优越性能,使其在2D人体姿态估计中占主导地位。积分回归法在架构上使用隐式热图,拉近了热图法与回归法。这就…

GraalVM + Springboot3 + IDEA 在widow10 上完成构建本地化服务

GraalVM是开发人员编写和执行Java代码的工具。具体来说,GraalVM是由Oracle创建的Java虚拟机(JVM)和Java开发工具包(JDK)。它是一个高性能的运行时,可以提高应用程序的性能和效率。 GraalVM的目标包括&…

【数据结构】哈希表

目录 一、哈希函数的引入 二、解决哈希冲突的思路 2.1基于闭散列的思路 2.2基于开散列的思路 2.3负载因子 三、关于哈希函数的设计 四、基于拉链法实现哈希表 4.1哈希表的内部构造 4.2插入操作 4.3扩容操作 4.4搜索操作 4.5删除操作 哈希表其实就是基于数组衍生而来…

深度解读面试题:链表中环的入口结点(附代码,可过在线OJ)

在解读“链表中环的入口结点”前,我认为有必要明白关于它的一些用于打基础的问题(相交链表、判断链表中是否存在环) 相交链表 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点…

快收藏!!整理了100个Python小技巧!!

下面,我就给大家分享100个Python小技巧,帮助大家更好的了解和学习Python,欢迎收藏、关注,点赞支持! ▍1、for循环中的else条件 这是一个for-else方法,循环遍历列表时使用else语句。下面举个例子&#xff…

根据平均值列出记录

AANSI SQL包括几个聚合函数,使您可以对一组值进行计算以将其结果作为单个值返回。他们包括Count(), Min(), Max(), Sum() and AVG(),以及其他。默认情况下,聚合函数适用于所有行,但是您可以通过将WHERE子句应用于SELECT语句来缩小字段的范围。…

直冲云霄,阿里大牛耗时49天整理12W字面试手册,押题准确率直冲95%

很多人都想进字节做开发,不论是技术还是薪资、福利都算得上TOP级~ 7月底官方再次启动扩招,发布了1200+后端工程师岗位! 那么本批有哪些优质岗位可选择?薪资待遇如何? 下面给大家列出几类具体的岗位要求&a…

软件项目管理指南:定义、5大过程、估算及进度管理方法等

本文将分享:1、软件项目管理的定义;2、软件项目管理的过程步骤;3、软件项目管理的内容;4、软件项目估算与进度管理方法;5、软件开发各生命周期阶段与文档、角色间的关系;6、软件开发项目中的各大角色职能&a…

深度学习-第P1周——实现mnist手写数字识别

深度学习-第P1周——实现mnist手写数字识别深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、数据可视化四、构建简单的CNN网络五、训练模型1、设置超参数2、编写训练函数3、编写测试函数4、正式训练六、结果可…

ADSP-21489的图形化编程详解(7:延时、增益、分频、反馈、响度)

延时 21489 可以做延时,音频高手会运用此项算法来增强音效,我们做个最简单的,让大家知道怎么用它,至于怎么样嵌入到自己的系统里实现更好的效果,则需要各位调音师专业的耳朵来判断,调音无上限!…

MySQL之索引及其背后的数据结构

✨博客主页: 荣 ✨系列专栏: MySQL ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录一. 索引的介绍1. 什么是索引2. 索引的使用二. 索引背后的数据结构1. 考虑使用哈希表2. 二叉搜索树3. N叉搜索树(B树, B树)4. 注意事项一. 索引的介绍 1. 什么是索引 索引 (Index) 是帮助…

[激光原理与应用-39]:《光电检测技术-6》- 光干涉的原理与基础

目录 第1章 概述 1.1 什么是光干涉 1.2 产生干涉的必要条件 1.3 非相干光 - 自发辐射无法产生干涉 1.4 相干光 - 受激辐射 1.5 时间相干性 1.6 空间相干性 它山之石 第1章 概述 1.1 什么是光干涉 它是指因两束光波相遇而引起光的强度重新分布的现象。 指两列或两列以上…

Verilog入门学习笔记:Verilog基础语法梳理

无论是学IC设计还是FPGA开发,Verilog都是最基本、最重要的必备技能。但任何一门编程语言的掌握都需要长期学习。并不是简简单单的随便读几本书,随便动动脑筋那么简单。Verilog是一门基于硬件的独特语言,由于它最终所实现的数字电路&#xff0…

基于AVDTP信令分析蓝牙音频启动流程

前言 公司项目edifier那边需要在原来音频SBC,AAC基础上增加LHDC5.0编码,在打通lhdc协议栈之前,学习记录一番AVDTP音频服务流程。 一、AVDTP音频流基础知识 分析音频流程首先应具备的最简单基础概念知识:AVDTP信令signal,流端点se…

【JVM】垃圾回收机制详解(GC)

目录一.GC的作用区域二.关于对象是否可回收1.可达性分析算法和引用计数算法2.四种引用类型三.垃圾收集算法1.标记-清除算法2.复制算法3.标记-整理算法4.分代收集算法四.轻GC(Minor GC)和重GC(Full GC)一.GC的作用区域 可以看jvm详解之后,再来理解这篇文章更好 堆和…

[附源码]计算机毕业设计农村人居环境治理监管系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ASP.NET Core 3.1系列(18)——EFCore中执行原生SQL语句

1、前言 前一篇博客介绍了EFCore中常见的一些查询操作,使用Linq或Lambda结合实体类的操作相当方便。但在某些特殊情况下,我们仍旧需要使用原生SQL来获取数据。好在EFCore中提供了完整的方法支持原生SQL,下面开始介绍。 2、构建测试数据库 …

Radare2 框架介绍及使用

Radare2 框架介绍及使用 欢迎入群交流 radare2 这是整个框架的核心工具,它具有debugger和Hexeditor的核心功能,使您能够像打开普通的文件一样,打开许多输入/输出源,包括磁盘、网络连接、内核驱动和处于调试中的进程等。 它实现了…

旧版本金庸群侠传3D新Unity重置修复版入门-lua”脚本“

金庸3DUnity重置入门系列文章 金庸3dUnity重置入门 - lua 语法 金庸3dUnity重置入门 - UniTask插件 金庸3dUnity重置入门 - Cinemachine 动画 金庸3dUnity重置入门 - 大世界实现方案 金庸3dUnity重置入门 - 素材极限压缩 (部分可能放到付费博客) 2022年底~20…