java零基础入门-日期时间类之Calendar类

468 阅读6分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------