Hi i,m JinXiang


前言

本篇文章主要介绍Calendar日历类型的几种常见方法以及部分理论知识


欢迎点赞  收藏 留言评论 私信必回哟

博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言


什么是Calendar日历类型?

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

为什么要用Calendar日历类型?

1、Calendar日历,主要用来处理时间,例如获取事件的某个部分,改变时间的某个部分,对时间进行加减操作等

2、Calendar日历与Date的区别,Date主要是获取一个日期的,里面也有很多操作日期的方法,但是早已经过期了,不再使用。所以操作日期主要使用Calendar

使用Calendar日历类型

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

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

Calendar c1 = Calendar.getInstance();

使用Calendar获得年月日时分秒:

// 获得年份
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 。 有关详细信息,请参阅博客 jdk_api_1.8-JAVA中文版API手册(免费版)-CSDN博客 中提供的APL工具,查看各个实体文档和子类文档进行深入了解!

Calendar日历操作

  • 日历字段可以用三种方法来改变set() , add()roll() 。

  • 此外,与set()不同, add()是强制立即重新计算日历的毫秒数和所有字段。

1、add()

1)要在当前年月日上添加一天,可以使用Calendar类的add方法,并将时间单元设置为Calendar.DAY_OF_MONTH,示例如下:

import java.util.Calendar;

public class Calendar1 {
@Test
public void Test(){
//Calendar日历类型
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期是:" + calendar.getTime()); // 在当前日期上增加一天
calendar.add(Calendar.DAY_OF_MONTH, 1); System.out.println("增加一天后的日期是:" + calendar.getTime());
}
}

2)在日期或时间上增加或减少指定的时间单元:

calendar.add(Calendar.YEAR, 1); // 增加1年
calendar.add(Calendar.MONTH, -2); // 减少2个月
calendar.add(Calendar.DAY_OF_MONTH, 7); // 增加7天

2、set()

设置Calendar表示的日期和时间:

calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, Calendar.JANUARY); // 月份从0开始计数,0表示一月
calendar.set(Calendar.DAY_OF_MONTH, 15);

3、roll()

roll()函数处理,只会对相应的字段进行处理,不会智能的对其它字段也进行逻辑上的改变。
add()函数会在逻辑上改变其它字段,使结果正确。

取某个日历之前的某个月

calendar.set(2002, 0, 12);  //代表2002年1月12日
calendar.roll(Calendar.MONTH, -1); //这样就将日期设置成了2002年12月12日。
System.out.println(calendar.getTime().toString());

Calendar与Date之间的转换

1)将Calendar转换为Date对象:

Date date = calendar.getTime();

2)将Date对象转换为Calendar:

Date date = new Date();
calendar.setTime(date);

总结不易,希望uu们不要吝啬亲爱的哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正

Calendar日历类型常见方法(必看!!)的更多相关文章

  1. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

  2. python 读写、创建 文件的方法(必看)

    python 读写.创建 文件的方法(必看) 更新时间:2016年09月12日 10:26:41 投稿:jingxian 我要评论下面小编就为大家带来一篇python 读写.创建 文件的方法(必看). ...

  3. (转载)Android之有效防止按钮多次重复点击的方法(必看篇)

    为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~ 那么如何有效避免这种情况的发生呢? 我的想法是,判断用户点击按钮间隔时间,如果间隔时间太 ...

  4. JS做类型检测到底有几种方法?看完本文就知道了!

    JS有很多数据类型,对于不同数据类型的识别和相互转换也是面试中的一个常考点,本文主要讲的就是类型转换和类型检测. 数据类型 JS中的数据类型主要分为两大类:原始类型(值类型)和引用类型.常见的数据类型 ...

  5. 利用JS提交表单的几种方法和验证(必看篇)

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...

  6. Python day6_dictionary字典的常见方法1_笔记(基本类型结束)

    # 字典的简述 # 1.字典不能做字典的key,列表也不能作为列表的key info={ 'k1':'v1', 'k2':'v2' } print(info) #2.通过键获取值 print(info ...

  7. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

  8. Java基础大家必看啊

    写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来.   学习 ...

  9. 【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2

    原文网址:http://bbs.51cto.com/thread-1099956-1.html 亲爱的学员们: 如今,各路开发者为淘一桶金也纷纷转入iOS开发的行列.你心动了吗?想要行动吗?知道如何做 ...

  10. 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)

    2019最新WEB前端开发小白必看的学习路线(附学习视频教程).web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次 ...

随机推荐

  1. html表格基本标签

    1.<table>表签 <table>...</table>标签用于在html文档中后创建表格.它包含表名和表格本身内容的代码. 2.<tr>标签 &l ...

  2. 数据分析师如何用SQL解决业务问题?

    本文来自问答. 提问:数据分析人员需要掌握sql到什么程度? 请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?会增删改查就可以了吗?还是说关于开发的内容也要会?不同阶段会有不同的要求吗? 正 ...

  3. 26种source-map看花了眼?别急,理解这几个全弄懂

    上一篇 webpack处理模块化源码 的文章中提到了 "source map",这一篇来详细说说. 有什么作用 source map 用于映射编译后的代码与源码,这样如果编译后的代 ...

  4. NFS快速入门(一):简介、原理

    NFS网络文件共享存储 什么是NFS NFS 是 Network File System 的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同主机系统之间可以共享文件或目录.N ...

  5. DDD项目落地之充血模型实践

    背景: 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率.提升可维护性: 1.DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务( ...

  6. 聊一聊 Go 的内存对齐

    前言 在一次工作中,需要使用 Go 调用 DLL 文件,其中就涉及到内存对齐的相关知识,如果自定义的结构体内存布局和所调用的 DLL 结构体内存布局不一致,就会无法正确调用.所以,一旦涉及到较为底层的 ...

  7. SQL多表查询指南

    SQL多表查询指南 在实际的数据库应用中,通常需要查询涉及多个表的数据.SQL提供了多种方法来执行这种多表查询操作. 内连接(INNER JOIN) 内连接是将多个表中满足连接条件的行组合在一起的操作 ...

  8. DevOps |研发效能之环境、程序、配置、SQL变更管理

    本文主要是讲如何建立有效的环境.程序.配置.SQL变更和管理平台. ​几天前和一个朋友聊到环境.程序的配置变更,SQL变更和整个上线流程.之前我们在这块也做了很多,有做的好的也有做的一般的,借机都总结 ...

  9. docker搭建CMS靶场

    项目地址:https://github.com/Betsy0/CMSVulSource 该项目是为了方便在对CMS漏洞进行复现的时候花费大量的时间在网上搜索漏洞源码,从而有了此项目.此项目仅为安全研究 ...

  10. Solution Set -「CF 1486」

    「CF 1486A」Shifting Stacks Link. 考虑最少需要操作多少次后判断. #include<map> #include<cstdio> using nam ...