Calendar类要点、易错点Calendar中的DATE 和 DAY_OF_MONTH 和 DAY_OF_YEAR

Calendar类要点、易错点

简介:

用于日期的计算。

是一个抽象类,得用它的静态方法getInstance()获取(它的子类)实例。(会根据地区的不同创建当地使用的日历)

将年月日等都存在了它的一个private数组里:fields[]。

年在该数组的下标存在了public static字段YEAR里,以此类推。

具体:

// set 设定某字段的值
// get 获取某字段的值
// add 增加某字段的值
// getTime 获取日历时间 表示的 Date对象
// getTimeInMillis 获取用毫秒数表示的日历时间
// setTime(date); 用Date对象给日历时间赋值
// getActualMaximum 获取某字段的最大值
Calendar cl = Calendar.getInstance();	//创建时间为当前时间的日历System.out.println(cl.get(Calendar.YEAR));
System.out.println(cl.get(Calendar.MONTH));cl.set(Calendar.MONTH, 1);
cl.add(Calendar.MONTH, -4);
Date d = cl.getTime();System.out.println(cl.get(Calendar.YEAR));
System.out.println(cl.get(Calendar.MONTH));
int m = cl.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(m);

运行结果:

2022
7
2021
9
31

一些意料之外的细节:

  1. 格列高利月历的Month是0 到 11!(中国默认格列高利月历,即公历)(其他字段从1开始,不含0)
  2. Calendar.HOUR默认是按12小时制处理,Calendar.HOUR_OF_DAY才是24小时。
  3. DAY_OF_WEEK,星期日对应的是1,星期六才是7。

易错点:

Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();	//比calendar1晚了几毫秒
calendar2.set(Calendar.DAY_OF_MONTH, 2);
calendar2.set(Calendar.DAY_OF_MONTH, 1);		//设置calendar2比calendar1早了一天
//计算calendar1\calendar2差了几天
long deltaDays = (calendar1.getTimeInMillis()-calendar2.getTimeInMillis())/1000/60/60/24;
int days = (int) deltaDays;
System.out.println(days);

实际输出:

18

错误原因分析:

这是由于calendar2初始化晚于calendar1造成的。

从ms精度上来讲,calendar1-calendar2=一天-几毫秒<1天,整除1000x60x60x24后 等于 0.

(如果倒过来calendar1的日期比calendar2早,就不影响calendar1-calendar2的结果了,只会影响calendar2-calendar1的结果)

修改方法:

long deltaDays = (calendar1.getTimeInMillis()-calendar2.getTimeInMillis())/1000/60/60/24;
int days = (int) deltaDays;
if (calendar1.after(calendar2)){days++;
}
ps:如果这里days的计算方式如下,也会造成错误
int days = (int)(calendar1.getTimeInMillis()-calendar2.getTimeInMillis())/1000/60/60/24;

错误原因:

强制类型转换优先级比除法高,会先将getTimeInMillis()方法返回的long类型数字截断成为int,此处造成高置位不为0数字丧失。

解决方法:

在整个计算式外面加一个"()",改变计算优先级。由于整除后得到的数字不大于2 16 2^{16}216,故强制类型转换不会造成数值变化。

Calendar中的DATE 和 DAY_OF_MONTH 和 DAY_OF_YEAR

cal1.add(Calendar.DAY_OF_MONTH,1);  
cal1.add(Calendar.DAY_OF_YEAR,1);  
cal1.add(Calendar.DATE,1); 

就单纯的add操作结果都一样,因为都是将日期+1
就没有区别说是在月的日期中加1还是年的日期中加1

但是Calendar设置DAY_OF_MONTH和DAY_OF_YEAR的目的不是用来+1
将日期加1,这通过cal1.add(Calendar.DATE,1)就可以实现

DAY_OF_MONTH的主要作用是cal.get(DAY_OF_MONTH),用来获得这一天在是这个月的第多少天
Calendar.DAY_OF_YEAR的主要作用是cal.get(DAY_OF_YEAR),用来获得这一天在是这个年的第多少天。
同样,还有DAY_OF_WEEK,用来获得当前日期是一周的第几天

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

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

相关文章

学计算机写作文怎么写,关于学电脑的作文

电脑是一部百科全书&#xff0c;有它相伴能滋润人生、丰富人生&#xff0c;能使人和世界零距离接触。以下是小编给大家提供的关于学电脑作文&#xff0c;欢迎大家阅读参考!学电脑作文1我这个人哪&#xff0c;什么都想试一试&#xff0c;什么都想学一学。看到妈妈用缝纫机做衣服…

Idea 类和包的路径后面出现100%methods;84% lines coveredIdea coverage覆盖率测试工具的使用

Idea 类和包的路径后面出现100%methods;84% lines covered 其他先不说&#xff0c;先看一下出现的问题&#xff1a; 类和包的路径后面多了100%methods;84% lines covered&#xff0c;以前类路径后面是什么都没的&#xff1b; 长话短说&#xff1b; 产生原因&#xff1a; 因…

悖论对计算机科学影响,数学和计算机科学的核心逻辑悖论

数学和计算机科学的核心逻辑悖论最终证实对真实世界也有影响&#xff0c;从而使一个关于物质的基本问题变得从根本上无法回答。图灵从算法的角度重新用公式表示出来。这些算法由一台每次能读或写1比特数据的理想化计算机执行。他证实&#xff0c;一些算法无法被此类“图灵机”判…

Springboot进行事件监听的四种方式

前言 讲到事件监听&#xff0c;这里我们说下自定义事件和自定义监听器类的实现方式&#xff1a; 自定义事件&#xff1a;继承自ApplicationEvent抽象类&#xff0c;然后定义自己的构造器 自定义监听&#xff1a;实现ApplicationListener接口&#xff0c;然后实现onApplication…

桌面云计算机有没有处理器,云桌面如何为CPU减负

众所周知&#xff0c;云桌面的架构就是将所有计算集中到中心服务器上&#xff0c;终端只负责与客户交互的部分&#xff0c;这样中心服务器server和客户端client之间通过硬件通道来回传用户的各种交互性数据。比如鼠标通道&#xff0c;键盘通道一般是上行数据通道&#xff0c;把…

SpringBoot:整合监听器/过滤器和拦截器

整合监听器/过滤器和拦截器 在实际开发过程中&#xff0c;经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏/高词汇、访问权限控制(URL级别)等业务需求。实现以上的功能&#xff0c;都会或多或少的用到过滤器、监听器、拦截器。 一.SpringBoot整合过…

中国为什么不发展民用计算机,为什么大多数人都错估了计算机与AI的发展?

据SingularytyHub报道&#xff0c;到目前为止&#xff0c;我们大多数人都已经熟悉摩尔定律(Moore s Law)&#xff0c;这条著名的定律认为&#xff0c;计算能力的发展遵循指数曲线&#xff0c;每18个月左右性价比就会翻一番。然而&#xff0c;当涉及到将摩尔定律被应用到不同的商…

mybatis-plus使用和原理剖析之逻辑删除

系列文章 mybatis-plus使用和原理剖析之条件构造器 文章目录一、官方说明二、使用方法三、原理剖析1.SQL注入器原理2.SelectById3.DeleteById4.总结四、风险评估一、官方说明 逻辑删除 说明: 只对自动注入的 sql 起效: 插入: 不作限制查找: 追加 where 条件过滤掉已删除数据,…

全国计算机英语四六级准考证打印准考证号,2017全国大学生英语四六级准考证打印...

2017年上半年度CET考试时间为6月17日&#xff0c;同学们打印准考证了吗?为方便大家打印四六级准考证&#xff0c;yjbys小编为大家分享英语四级考试准考证打印官方主页入口如下&#xff1a;2017年上半年度CET考试时间及报名方式一、考试科目及时间1.笔试考试时间日期(6月17日)考…

Centos7配置Jenkins

Centos7配置Jenkins jenkins 官方下载地址&#xff1a;https://mirrors.jenkins-ci.org/redhat/ maven 官方下载地址&#xff1a;https://archive.apache.org/dist/maven/maven-3/ tomcat 官方下载地址&#xff1a;https://tomcat.apache.org/download-90.cgi 1、配置jdk …

学计算机的写论文题目,经典本科计算机论文选题 本科计算机论文题目怎样取...

【100道】经典本科计算机论文选题,每一个论文题目都是精选出来的,看了后定能知晓本科计算机论文题目怎样取等相关写作技巧,让本科计算机论文写作轻松起来&#xff01;一、比较好写的本科计算机论文题目:1、应用型本科计算机的数学实验教学研究2、对应用型本科计算机网络方向实践…

Collectors.groupingBy()进行分组时,分组值存在null值会报NPE(空指针)错误,使用时要注意

问题分析&#xff1a; 1、使用Collectors.groupingBy()进行分组时&#xff0c;分组值存在null值。 List<String> strList new ArrayList<>(Arrays.asList("11", "12", "13", null, null)); Map<String, List<String>>…

计算机硬盘用u盘维修,U盘装机大师修复磁盘坏道详细教程

我们都知道当我们的磁盘使用的时间久了就会容易出现各种问题&#xff0c;然而硬盘的坏道是最常见的问题之一。关于磁盘出现坏道有很多原因&#xff0c;诸如硬盘本身质量问题&#xff0c;老化&#xff0c;使用不当等等。我们的硬盘内存太小也会导致应用软件对硬盘频繁访问&#…

Linux中Minio安装与启动

Minio是在Apache License v2.0下发布的对象存储服务器。它与Amazon S3云存储服务兼容。它最适合存储非结构化数据&#xff0c;如照片&#xff0c;视频&#xff0c;日志文件&#xff0c;备份和容器/ VM映像。对象的大小可以从几KB到最大5TB。Minio服务器足够轻&#xff0c;可以与…

多屏幕炒股计算机配置,多屏幕股票交易计算机配置建议使用i59400F计算机主机配置(最多六个屏幕)...

在经历了几年的熊市股市之后&#xff0c;2019年股市似乎有所回升. 最近&#xff0c;许多用户询问多屏股票交易计算机的配置&#xff0c;例如三屏&#xff0c;四屏&#xff0c;和六屏. 实际上&#xff0c;与普通计算机的最大区别是该图形卡需要配备多屏幕图形卡. 一台计算机可以…

List.removeIf():删除集合中满足给定条件的所有元素

今天偶然间发现了Collection在1.8新增了一个removeIf(Predicate<? super E> filter)方法&#xff0c;能够实现面试官们常问的&#xff1a;如何一边遍历&#xff0c;一边删除。 首先是源码 /*** Removes all of the elements of this collection that satisfy the given…

计算机专业论文docx,计算机系毕业论文范文-20210606000812.docx-原创力文档

计算机系毕业论文范文一&#xff1a;计算机技术在工程项目管理中的应用推动国家经济发展的核心是科学技术的进步。有效推动科学技术进步的关键在于创新&#xff0c;这是国家经济与社会前进的有效动力&#xff0c;在相关产业领域也发挥着非常重要作用&#xff0c;作为国家经济的…

小学二年级上学期计算机教案,小学数学二年级上册分苹果教案设计

小学数学二年级上册分苹果教案设计〖教学目标1.经历分苹果等实际操作&#xff0c;初步体会有余数除法与生活的密切联系&#xff0c;进一步体会除法的意义。2.通过实际操作&#xff0c;抽象出有余数除法的书写格式&#xff0c;并体会余数一定要比除数小。〖教材分析分苹果是二年…

生物计算机的主要原材料是(),新材料为生物计算机打造“神经元”和“突触”...

一项最新研究利用复杂的氧化物&#xff0c;打造出了与神经元和突触相似的元件。图片来自pixabay.com虽然电脑的计算速度比人脑快&#xff0c;但在物体识别任务等方面&#xff0c;人脑还是更胜一筹。除此之外&#xff0c;人脑耗费的能量也远低于电脑。大脑的运作方式可以在一定程…

hotmail接收邮件服务器(pop),Microsoft微软邮箱 outlook、hotmail 打开pop和imap的方法

分享个微软邮箱 outlook、hotmail 打开pop和imap的方法只有打开了pop或者imap &#xff0c; foxmail一类的邮件管理客户端才能正常收邮件&#xff1b;打开了smtp才能正常发邮件。设置方法如图&#xff1a;1.登录进去账户以后&#xff0c;点击右上角的设置&#xff0c;齿轮图标&…