Java Calendar类使用总结及使用实例

2025-05-29 0 88

平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,java中提供了一个专门的类calendar来处理日期与时间。
接下来就讲解下calendar类的使用场景及使用方法。

1.获取calendar实例

首先,我们看下calendar类的定义

?

1
public abstract class calendar implements serializable, cloneable, comparable<calendar>

因为被定义为abstract,所以我们无法通过new来创建calendar类的实例,不过calendar类提供了一个类方法getinstance()来返回calendar的实例。

?

1

2

3

4
public static calendar getinstance()

{

return createcalendar(timezone.getdefault(), locale.getdefault(locale.category.format));

}

由此,获取calendar实例的代码如下所示:

?

1
calendar calendar = calendar.getinstance();

2.获取当前时间

?

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);

// 月份的下标是从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小时制

int minute = calendar.get(calendar.minute);

int second = calendar.get(calendar.second);

system.out.println("现在是:" + year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒");

}

}

运行结果:

现在是:2019年2月21日15时36分38秒

注意:月份的下标是从0开始的,即0~11分别代表1~12月

3.设置时间
假设我们现在需要将时间设置为2019-02-21 23:59:59

3.1(一起设置):

?

1

2

3

4
calendar calendar = calendar.getinstance();

calendar.set(2019, calendar.february, 21, 23, 59, 59);

system.out.println(calendar.gettime());

3.2(分别设置):

?

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的运行结果都如下所示:

thu feb 21 23:59:59 cst 2019

4.时间计算

4.1增加秒

我们在3.1的基础上增加1秒,那么时间应该是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());

}

运行结果:

fri feb 22 00:00:00 cst 2019

4.2增加月

首先我们将时间设置为2019-01-31,然后先增加1个月,再增加2个月

?

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());

运行结果:

thu jan 31 15:58:03 cst 2019
thu feb 28 15:58:03 cst 2019
sun apr 28 15:58:03 cst 2019

注意事项:当所在的月份没有那个日期时,如2月份没有31号,返回的是所在月的最后一天(2月28号)

5.扩展:获取某月的第一天和最后一天

?

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());

}

}

运行结果:

2019-02-01
2019-02-28
2019-03-01
2019-03-31

6.参考链接
java中calendar类的常用方法
java calendar类的使用总结
java时间类date、calendar及用法

以上所述是小编给大家介绍的java calendar类使用总结及使用实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

原文链接:https://www.cnblogs.com/zwwhnly/p/10413392.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java Calendar类使用总结及使用实例 https://www.kuaiidc.com/109681.html

相关文章

发表评论
暂无评论