平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的日历类来处理日期与时间。
接下来就讲解下日历类的使用场景及使用方法。
首先,我们看下日历类的定义
公共日历抽象类实现了Serializable,可克隆,Comparable
因为被定义为抽象的,所以我们无法通过新来创建日历类的实例,不过日历类提供了一个类方法getInstance()来返回日历的实例。
日历公共静态getInstance () { 返回createCalendar (TimeZone.getDefault (), Locale.getDefault (Locale.Category.FORMAT)); }
由此,获取日历实例的代码如下所示:
日历日历=Calendar.getInstance ();
包com.zwwhnly.springbootdemo; 进口java.util.Calendar; 公开课CalendarDemo { 公共静态void main (String [] args) { 日历日历=Calendar.getInstance (); int年=calendar.get (Calendar.YEAR);//月份的下标是从0开始的,即0 ~ 11分别代表1 ~ 12个月,因此需要+ 1 int月=calendar.get (Calendar.MONTH) + 1; int天=calendar.get (Calendar.DAY_OF_MONTH); int小时=calendar.get (Calendar.HOUR_OF_DAY);//24小时制 int分钟=calendar.get (Calendar.MINUTE); int二=calendar.get (Calendar.SECOND); system . out。println(“现在是:“+ +年+“年”+月“日”“月”+ + +小时+“时”+分钟+“分”+第二+“秒”); } } >之前运行结果:
现在是:2019年2月21日15时36分38秒
引用>注意:月份的下标是从0开始的,即0 ~ 11分别代表1 ~ 12月
假设我们现在需要将时间设置为2019-02-21 23:59:59<强> 3.1(一起设置):强>
日历日历=Calendar.getInstance (); 日历。集(2019年日历。2月21日,23日,59岁的59); System.out.println (calendar.getTime ()); >之前<强> 3.2(分别设置):强>
日历日历=Calendar.getInstance (); calendar.set(日历。年,2019); calendar.set(日历。月,Calendar.FEBRUARY); calendar.set(日历。DAY_OF_MONTH 21); calendar.set(日历。HOUR_OF_DAY 23); calendar.set(日历。分钟,59); calendar.set(日历。第二,59); System.out.println (calendar.getTime ()); >之前3.1和3.2的运行结果都如下所示:
清华2019年2月21日23:59:59 CST
引用>,
<强> 4.1增加秒强>
我们在3.1的基础上增加1秒,那么时间应该是2019-02-22就是
公共静态void main (String [] args) { 日历日历=Calendar.getInstance (); 日历。集(2019年日历。2月21日,23日,59岁的59); calendar.add(日历。第二,1); System.out.println (calendar.getTime ()); }运行结果:
星期五2019年2月22日就是CST
引用><强> 4.2增加月强>
首先我们将时间设置为2019-01-31,然后先增加1个月,再增加2个月
日历日历=Calendar.getInstance (); 日历。集(2019年日历。1月31日); System.out.println (calendar.getTime ()); calendar.add(日历。月,1); System.out.println (calendar.getTime ()); calendar.add(日历。月,2); System.out.println (calendar.getTime ()); >之前运行结果:
清华2019年1月31日15:58:03 CST
引用>
清华2019年2月28日15:58:03 CST
太阳2019年4月28日15:58:03 CST注意事项:当所在的月份没有那个日期时,如2月份没有31号,返回的是所在月的最后一天(2月28号)
包com.zwwhnly.springbootdemo; 进口java.text.SimpleDateFormat; 进口java.util.Calendar; 公开课CalendarDemo { 公共静态void main (String [] args) { system . out。println (getFirstDayOfMonth (2019 2)); system . out。println (getLastDayOfMonth (2019 2)); system . out。println (getFirstDayOfMonth (2019 3)); system . out。println (getLastDayOfMonth (2019 3)); } 公共静态字符串getLastDayOfMonth (int, int) { 日历日历=Calendar.getInstance (); calendar.set(日历。年,一年); calendar.set(日历。月,月- 1); calendar.set(日历。DAY_OF_MONTH calendar.getActualMaximum (Calendar.DATE)); 返回新SimpleDateFormat (yyyy-MM-dd) .format (calendar.getTime ()); } 公共静态字符串getFirstDayOfMonth (int, int) { 日历日历=Calendar.getInstance (); calendar.set(日历。年,一年); calendar.set(日历。月,月- 1); calendar.set(日历。DAY_OF_MONTH calendar.getMinimum (Calendar.DATE)); 返回新SimpleDateFormat (yyyy-MM-dd) .format (calendar.getTime ()); } }Java日历类使用总结及使用实例