平时在浏览一些网站时,有些网站会显示出当前时间,如现在是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
相关文章
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-25 82
-
2025-05-29 50
-
2025-05-29 39
-
2025-05-27 79
-
2025-05-29 101

