Java之Calendar基本使用

Calendar是一个日历类
首先, 从类名定义可以看出它实现了Serializable, Cloneable, Comparable接口。
And, 实现了Comparable就意味着可以使用Arrays.sort的方法对多个Calendar对象进行排序

class Calendar implements Serializable, Cloneable, Comparable<Calendar>

Let’s see how to use it !

创建实例

public static Calendar getInstance()

获取当前时间

Calendar calendar = Calendar.getInstance();
System.out.println("当前时间: " + calendar.getTime()); // 返回Date对象

输出: 
当前时间: Sun Sep 01 13:22:33 CST 2019

获取年/月/日/时/分/秒/星期

public int get(int field)

Calendar中设置不同的整型常量来代表不同的时间单位。例如:
Calendar.YEAR
Calendar.MONTH
Calendar.DATE

示例

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; //Calendar使用0表示一月,要表示当前月得+1
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
int week = calendar.get(Calendar.DAY_OF_WEEK); //星期日表示本周第一天
System.out.println("当前时间: " + year + "年" + month + "月" + day + "日" + hour + "点" + minute + "分" + second + "秒" + "本周第" + week + "天");

输出:
2019年9月1日13点29分3秒本周第1天

注意
在Calendar中

  • 月份从0开始算起 !!!
  • 星期天一周的第一天

设置时间

使用Calendar常量进行设置

public void set(int field, int value)

例子

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));

calendar.set(Calendar.YEAR, 2000);
System.out.println(calendar.get(Calendar.YEAR));
  
输出:
2019
2000

使用具体的时间进行设置

public final void setTime(Date date)
public final void set(int year, int month, int date)
public final void set(int year, int month, int date, int hourOfDay, int minute)
public final void set(int year, int month, int date, int hourOfDay, int minute,int second)
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toString());

calendar.set(2019, 9, 10);
System.out.println(calendar.getTime().toString());

输出:
Sun Sep 01 14:00:23 CST 2019
Thu Oct 10 14:00:23 CST 2019

时间的计算

如果我想将时间往前/往后推移

public void add(int field, int amount);

栗子:

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));

calendar.add(Calendar.YEAR, 5);
System.out.println(calendar.get(Calendar.YEAR));

输出:
2019
2024

See? 它还有个相似的方法roll, 但是还是推荐使用add.
——>Calendar中add函数和roll函数的用法及区别

我从别处copy过来的一个例子:

// 假设求6月的最后一天

int currentMonth = 6; //7月
// 先求出7月份的第一天
calendar.set(calendar.get(Calendar.YEAR), currentMonth, 1);
// 往后推移一天
calendar.add(Calendar.DATE, -1);
// 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("6月份的最后一天为" + day + "号");

总之,使用Calendar注意4点:

(1) 月份从0开始算起, 即0代表一月**
(2) 星期天一周的第一天
(3) 时间推移使用add
(4) 不能对日期进行格式化,可以转为Date类型后格式化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值