Java API 日期时间 Calendar
Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
1 构造方法
protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。需要通过别的途径生成该对象。
Calendar 提供了一个类方法 getInstance 用于获取这种类型的对象。该方法返回一个Calendar 对象。
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
2 成员方法
方法 | 解释 |
---|---|
static Calendar getInstance() | 使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。 |
public void set(int year,int month,int date,int hourofday,int minute,int second) | 设置日历的年、月、日、时、分、秒。 |
public int get(int field) | 返回给定日历字段的值。所谓字段就是年、月、日等等。 |
public void setTime(Date date) | 使用给定的Date设置此日历的时间。Date –> Calendar |
public Date getTime() | 返回一个Date表示此日历的时间。Calendar –> Date |
abstract void add(int field,int amount) | 按照日历的规则,给指定字段添加或减少时间量。 |
public long getTimeInMillies() | 以毫秒为单位返回该日历的时间值。 |
3 日历字段
日历字段包含以下两种:
- 一种是表示时间的单位,例如年、月、日等等。一般获取时间的时候使用。
- 另一种是具体的日期,例如一月、二月、三月、一日、二日、三日、一点钟、两点钟等等具体的时间。一般判断的时候使用。
时间单位字段:
代码 | 解释 |
---|---|
YEAR | 年 |
MINUTE | 分 |
DAY_OF_WEEK_IN_MONTH | 某月中第几周 |
MONTH | 月 |
SECOND,MILLISECOND | 秒,毫秒 |
WEEK_OF_MONTH | 日历式的第几周 |
DATE | 日 |
DAY_OF_MONTH | 和DATE一样 |
DAY_OF_YEAR | 一年的第多少天 |
HOUR_OF_DAY | 时 |
DAY_OF_WEEK | 周几 |
WEEK_OF_YEAR | 一年的第多少周 |
AM_PM | 返回1则表示是下午,返回0表示上午 |
获取时间
1 |
|
注意:month是从0开始的,而月份是从1开始的,所以month需要加一。
设置时间
月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2018-02-15 23:59:59
可以这样:
1 |
|
或者也可以单个字段一一设置:
1 |
|
打印的时间结果为:
1 |
|
调整时间 - add 方法
比如在除夕当晚最后一秒,add 一秒:
1 |
|
打印时间结果如下,日期会自动进入下一天:
1 |
|
再比如 1 月 31 号的时候,月份加一,会出现怎样结果:
1 |
|
运行结果:
1 |
|
说明 add 月份时,会将不存在的日期归为当月日历的最后一天。
二月天案例(应用)
案例需求
获取任意一年的二月有多少天
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class CalendarTest {
public static void main(String[] args) {
//键盘录入任意的年份
Scanner sc = new Scanner(System.in);
System.out.println("请输入年:");
int year = sc.nextInt();
//设置日历对象的年、月、日
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
//3月1日往前推一天,就是2月的最后一天
c.add(Calendar.DATE, -1);
//获取这一天输出即可
int date = c.get(Calendar.DATE);
System.out.println(year + "年的2月份有" + date + "天");
}
}
Java API 日期时间 Calendar
https://flepeng.github.io/021-Java-31-API-Java-API-日期时间-Calendar/