经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Calendar日历类型常见方法(必看!!)
来源:cnblogs  作者:锦湘  时间:2023/11/22 16:49:58  对本文有异议

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对象,其日历字段已使用当前日期和时间进行初始化:

  1. Calendar c1 = Calendar.getInstance();

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

  1. // 获得年份
  2. int year = c1.get(Calendar.YEAR);
  3. // 获得月份
  4. int month = c1.get(Calendar.MONTH) + 1;
  5. // 获得日期
  6. int date = c1.get(Calendar.DATE);
  7. // 获得小时
  8. int hour = c1.get(Calendar.HOUR_OF_DAY);
  9. // 获得分钟
  10. int minute = c1.get(Calendar.MINUTE);
  11. // 获得秒
  12. int second = c1.get(Calendar.SECOND);
  13. // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
  14. 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,示例如下:

  1. import java.util.Calendar;
  2. public class Calendar1 {
  3. @Test
  4. public void Test(){
  5. //Calendar日历类型
  6. Calendar calendar = Calendar.getInstance();
  7. System.out.println("当前日期是:" + calendar.getTime());
  8. // 在当前日期上增加一天
  9. calendar.add(Calendar.DAY_OF_MONTH, 1);
  10. System.out.println("增加一天后的日期是:" + calendar.getTime());
  11. }
  12. }

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

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

2、set()

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

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

3、roll()

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

取某个日历之前的某个月

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

Calendar与Date之间的转换

1)将Calendar转换为Date对象:

  1. Date date = calendar.getTime();

2)将Date对象转换为Calendar:

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

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

原文链接:https://www.cnblogs.com/liujinxiang23/p/17849697.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号