一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第18天,点击查看活动详情。
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。
我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、前言
上两期我们是分别学习了日期时间类中的Date类、DateFormat类及SimpleDateFormat类,对吧。不知道你们掌握的如何?如果还有小伙伴是中途插入学习的, 那么你可以通过下方链接快速跳转到对应的文章,希望能帮助你快速学习,都具有很好的入门教学价值。
那可能有小伙伴就会问了,那这一期,喵手应该讲啥呀?问的很好,下回不许在问了,
还是日期时间类。日历,想必大家在日常都再熟悉不过了。
那么对于日历,java也封装有对应类。Calendar类,在Date类后出现,同时也替换掉一些Date类的方法。Calendar类封装了将近所有可能会用到的时间信息为静态成员变量,极其方便。Calendar类的创造,就是方便获取各个时间属性的。
二、正文
Calendar类,包路径:java.util.Calendar。
从源码上,我们可以看到Calendar类是一个抽象类,不能直接拿来使用。所以通常都是通过静态方法而创建,然后返回Calendar对象。
那Calendar类具体怎么创建呢?它有个静态方法getInstance(),public static Calendar getInstance(),使用默认时区及语言环境获得一个日历。
如下我来演示一下,如何创建Calendar类,仅供参考:
import java.util.Calendar;
@Test
public void test(){
//创建Calendar类
Calendar calendar = Calendar.getInstance();
}
三、常用方法
那Calendar类有哪些常用方法呢?这肯定是大家伙最关注的问题了,学习一个东西,如果非常冷门,那八成兴趣不会投入,所以接下来我就给大家说说它。
根据Calendar类的官方文档,常用方法我总结如下,仅供参考:
-
public int get(int field) :返回指定日历字段的值。
-
public void set(int field, int value) :将指定的日历字段设置为给定值。
-
public abstract void add(int field, int amount) :根据日历的规则,为指定的日历字段添加或减去指定的时间量。
-
public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
然后Calendar类也提供了大量的成员变量,代表给定的日历字段,大家需要了解一下:
- YEAR:年
- MONTH:月
- DAY_OF_MONTH:月中的天,具体几号
- HOUR:时(12小时制)
- HOUR_OF_DAY:时(24小时制)
- MINUTE:分
- SECOUND:秒
- DAY_OF_WEEK:周几(周日为1,也可以使用-1表示)
具体可以看下源码,你们就会知道,它提供了多少,应有尽有。
四、实例演示
接下来,我们就一一来演示Calendar类的常用方法
1、get方法
get()方法:用来获取指定字段的值。
代码演示如下:
@Test
public void test5() {
//创建Calendar类
Calendar calendar = Calendar.getInstance();
//设置年
int year = calendar.get(Calendar.YEAR);
//设置月
int month = calendar.get(Calendar.MONTH);
//设置日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//输出
System.out.println(year + "年" + month + "月" + day + "日");
}
实际运行截图如下:
可以看到,准确获取到了当前系统时间,年月日。
2、set方法
讲完get方法,接下来就是它的set方法了。set()与get()方法作用对立,一个获取,而set()方法是用来设置所指定的值。
比如我可以先设置指定年月日的值,然后再进行获取,可以看下,是否能被获取到?
代码演示如下:
@Test
public void test() {
//创建Calendar类
Calendar calendar = Calendar.getInstance();
//设置年
calendar.set(Calendar.YEAR,2020);
//设置月
calendar.set(Calendar.MONTH,5);
//设置日
calendar.set(Calendar.DAY_OF_MONTH,20);
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月
int month = calendar.get(Calendar.MONTH);
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//输出
System.out.println(year + "年" + month + "月" + day + "日");
}
实际运行截图如下:
准确是获取到了我们所设置的年月日三值,对吧。
3、add方法
add()方法:作用是对日历字段的值进行加减操作,add方法传入的第二个参数,就是正加负减。具体还是看我代码演示一遍吧,这样你们就能清晰很多。
代码演示如下:
@Test
public void test() {
//创建Calendar类
Calendar calendar = Calendar.getInstance();
//当前日期输出
System.out.println("当前系统日期为:"+calendar.get(Calendar.YEAR) + "年" + calendar.get(Calendar.MONTH) + "月" + calendar.get(Calendar.DAY_OF_MONTH) + "日");
//使用add方法
calendar.add(Calendar.YEAR, 2);//加2年
calendar.add(Calendar.MONTH, -1);//减1月
calendar.add(Calendar.DAY_OF_MONTH, 2);//加两天
//应该输出:2024年2月20日
System.out.println("执行add方法后日期为:"+calendar.get(Calendar.YEAR) + "年" + calendar.get(Calendar.MONTH) + "月" + calendar.get(Calendar.DAY_OF_MONTH) + "日");}
实际运行截图如下:
与我预计的一样,证明是按实际日期加减的值一样。
4、getTime方法
获取毫秒数?与Date类的用法是一样的吗?不不不,Calendar类虽然也提供了getTime(),但它不是用来获取毫秒数的,而是获取一个对应的日期Date对象。
代码演示如下:
@Test
public void test() {
//创建Calendar类
Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
System.out.println(time);
}
实际运行截图如下:
获取到的就是一个Date对象,没问题吧?演示就到此结束,希望看我文章的小伙伴可以勤加练习,早日掌握。
... ...
好啦,以上就是基Calendar类的基本使用啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
五、结尾
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------