平時(shí)在瀏覽一些網(wǎng)站時(shí),有些網(wǎng)站會(huì)顯示出當(dāng)前時(shí)間,如現(xiàn)在是xx年xx月xx日 xx時(shí)xx分xx秒,在實(shí)際的開發(fā)過程中,也會(huì)涉及到日期和時(shí)間的計(jì)算,java中提供了一個(gè)專門的類calendar來處理日期與時(shí)間。
接下來就講解下calendar類的使用場(chǎng)景及使用方法。
1.獲取calendar實(shí)例
首先,我們看下calendar類的定義
1
|
public abstract class calendar implements serializable, cloneable, comparable<calendar> |
因?yàn)楸欢x為abstract,所以我們無法通過new來創(chuàng)建calendar類的實(shí)例,不過calendar類提供了一個(gè)類方法getinstance()來返回calendar的實(shí)例。
1
2
3
4
|
public static calendar getinstance() { return createcalendar(timezone.getdefault(), locale.getdefault(locale.category.format)); } |
由此,獲取calendar實(shí)例的代碼如下所示:
1
|
calendar calendar = calendar.getinstance(); |
2.獲取當(dāng)前時(shí)間
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package com.zwwhnly.springbootdemo; import java.util.calendar; public class calendardemo { public static void main(string[] args) { calendar calendar = calendar.getinstance(); int year = calendar.get(calendar.year); // 月份的下標(biāo)是從0開始的,即0~11分別代表1~12月,因此需要+1 int month = calendar.get(calendar.month) + 1 ; int day = calendar.get(calendar.day_of_month); int hour = calendar.get(calendar.hour_of_day); // 24小時(shí)制 int minute = calendar.get(calendar.minute); int second = calendar.get(calendar.second); system.out.println( "現(xiàn)在是:" + year + "年" + month + "月" + day + "日" + hour + "時(shí)" + minute + "分" + second + "秒" ); } } |
運(yùn)行結(jié)果:
現(xiàn)在是:2019年2月21日15時(shí)36分38秒
注意:月份的下標(biāo)是從0開始的,即0~11分別代表1~12月
3.設(shè)置時(shí)間
假設(shè)我們現(xiàn)在需要將時(shí)間設(shè)置為2019-02-21 23:59:59
3.1(一起設(shè)置):
1
2
3
4
|
calendar calendar = calendar.getinstance(); calendar.set( 2019 , calendar.february, 21 , 23 , 59 , 59 ); system.out.println(calendar.gettime()); |
3.2(分別設(shè)置):
1
2
3
4
5
6
7
8
9
|
calendar calendar = calendar.getinstance(); calendar.set(calendar.year, 2019 ); calendar.set(calendar.month, calendar.february); calendar.set(calendar.day_of_month, 21 ); calendar.set(calendar.hour_of_day, 23 ); calendar.set(calendar.minute, 59 ); calendar.set(calendar.second, 59 ); system.out.println(calendar.gettime()); |
3.1和3.2的運(yùn)行結(jié)果都如下所示:
thu feb 21 23:59:59 cst 2019
4.時(shí)間計(jì)算
4.1增加秒
我們?cè)?.1的基礎(chǔ)上增加1秒,那么時(shí)間應(yīng)該是2019-02-22 00:00:00
1
2
3
4
5
6
|
public static void main(string[] args) { calendar calendar = calendar.getinstance(); calendar.set( 2019 , calendar.february, 21 , 23 , 59 , 59 ); calendar.add(calendar.second, 1 ); system.out.println(calendar.gettime()); } |
運(yùn)行結(jié)果:
fri feb 22 00:00:00 cst 2019
4.2增加月
首先我們將時(shí)間設(shè)置為2019-01-31,然后先增加1個(gè)月,再增加2個(gè)月
1
2
3
4
5
6
7
8
|
calendar calendar = calendar.getinstance(); calendar.set( 2019 , calendar.january, 31 ); system.out.println(calendar.gettime()); calendar.add(calendar.month, 1 ); system.out.println(calendar.gettime()); calendar.add(calendar.month, 2 ); system.out.println(calendar.gettime()); |
運(yùn)行結(jié)果:
thu jan 31 15:58:03 cst 2019
thu feb 28 15:58:03 cst 2019
sun apr 28 15:58:03 cst 2019
注意事項(xiàng):當(dāng)所在的月份沒有那個(gè)日期時(shí),如2月份沒有31號(hào),返回的是所在月的最后一天(2月28號(hào))
5.擴(kuò)展:獲取某月的第一天和最后一天
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package com.zwwhnly.springbootdemo; import java.text.simpledateformat; import java.util.calendar; public class calendardemo { public static 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 )); } public static string getlastdayofmonth( int year, int month) { calendar calendar = calendar.getinstance(); calendar.set(calendar.year, year); calendar.set(calendar.month, month - 1 ); calendar.set(calendar.day_of_month, calendar.getactualmaximum(calendar.date)); return new simpledateformat( "yyyy-mm-dd" ).format(calendar.gettime()); } public static string getfirstdayofmonth( int year, int month) { calendar calendar = calendar.getinstance(); calendar.set(calendar.year, year); calendar.set(calendar.month, month - 1 ); calendar.set(calendar.day_of_month, calendar.getminimum(calendar.date)); return new simpledateformat( "yyyy-mm-dd" ).format(calendar.gettime()); } } |
運(yùn)行結(jié)果:
2019-02-01
2019-02-28
2019-03-01
2019-03-31
6.參考鏈接
java中calendar類的常用方法
java calendar類的使用總結(jié)
java時(shí)間類date、calendar及用法
以上所述是小編給大家介紹的java calendar類使用總結(jié)及使用實(shí)例詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!
原文鏈接:https://www.cnblogs.com/zwwhnly/p/10413392.html