服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java Calendar类使用总结及使用实例

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

2021-07-21 14:13周伟伟的技术博客 Java教程

这篇文章主要介绍了Java Calendar类使用总结及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

平时在浏览一些网站时,有些网站会显示出当前时间,如现在是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类使用总结及使用实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

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

延伸 · 阅读

精彩推荐
  • Java教程MyBatis中insert操作返回主键的实现方法

    MyBatis中insert操作返回主键的实现方法

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数。这篇文章主要介绍了MyBatis中insert操作返回主键的方法,需要的朋...

    Truong9992020-06-19
  • Java教程Spring Boot配置读取实现方法解析

    Spring Boot配置读取实现方法解析

    这篇文章主要介绍了Spring Boot配置读取实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    猿天地5022020-08-14
  • Java教程浅谈Java Fork/Join并行框架

    浅谈Java Fork/Join并行框架

    这篇文章主要介绍了浅谈Java Fork/Join并行框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    一字马胡4582021-01-13
  • Java教程InterlliJ IDEA2020新建java web项目找不到Static Web的解决

    InterlliJ IDEA2020新建java web项目找不到Static Web的解决

    这篇文章主要介绍了InterlliJ IDEA2020新建java web项目找不到Static Web的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    似水流年,是谁苍白了等10072020-09-02
  • Java教程spring boot整合jsp及设置启动页面的方法

    spring boot整合jsp及设置启动页面的方法

    这篇文章主要给大家介绍了关于spring boot整合jsp及设置启动页面的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参...

    上岸之路6192021-05-31
  • Java教程String长度有限制吗?是多少?

    String长度有限制吗?是多少?

    话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候也遇到了...

    今日头条3112020-11-10
  • Java教程java实现Object和Map之间的转换3种方式

    java实现Object和Map之间的转换3种方式

    本篇文章主要介绍了java实现Object和Map之间的转换3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    古越剑箫4832020-11-25
  • Java教程Spring 多线程下注入bean问题详解

    Spring 多线程下注入bean问题详解

    本篇文章主要介绍了Spring 多线程下注入bean问题详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    jijs4422021-01-19