目录
一、Calendar的创建
Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段 之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。
创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。
Calendar c = Calendar.getInstance();
二、Calendar的常用方法
当创建了一个 Calendar 对象后,就可以通过 Calendar 对象中的一些方法来处理日期、时间。 Calendar 类的常用方法如表 2 所示。
Calendar 对象可以调用 set() 方法将日历翻到任何一个时间,当参数 year 取负数时表示公元前。 Calendar 对象调用 get() 方法可以获取有关年、月、日等时间信息,参数 field 的有效值由 Calendar 静态常 量指定。
Calendar 类中定义了许多常量,分别表示不同的意义
- Calendar.YEAR:年份。
- Calendar.MONTH:月份。
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
- Calendar.HOUR:12小时制的小时。
- Calendar.HOUR_OF_DAY:24 小时制的小时。
- Calendar.MINUTE:分钟。
- Calendar.SECOND:秒。
- Calendar.DAY_OF_WEEK:星期几。
三、代码实例
- 获取月份的时候从0月开始 ,所以要加一,获取星期的时候,周日为第一天 所以要减一。
package com.by.date;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
public class Riqi {
public static void main(String[] args) throws ParseException {
Calendar ca = Calendar.getInstance();//如果不设置时间,则默认为当前时间
System.out.printf("%tF %<tT", ca);//2024-01-02 11:34:29
ca.setTime(new Date());//把系统当前时间赋给Calendar对象
System.out.printf("现在时刻:%tF%<tT%n", ca.getTime());//现在时刻:2024-01-0211:37:17
// 获取当前年份
int year = ca.get(Calendar.YEAR);
System.out.printf("现在是:%d年%n", year);//现在是:2024年
// 获取当前月
int month = ca.get(Calendar.MONTH) + 1;
System.out.println("现在是:" + month + "月");//现在是:1月
// 获取日
int day = ca.get(Calendar.DATE);
System.out.println("现在是" + day + "号");//现在是3号
// 获取今天是星期几(以星期日为第一天)所以要减1
int week = ca.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println("今天是星期" + week);//今天是星期3
// 获取当前小时
int hour = ca.get(Calendar.HOUR_OF_DAY);
System.out.println(hour + "时");//8时
// 获取当前分钟
int minute = ca.get(Calendar.MINUTE);
System.out.println(minute + "分钟");//50分钟
// 获取当前秒数
int second = ca.get(Calendar.SECOND);
System.out.println(second + "秒");//33秒
// 获取今天是本月的第几天
int dayOfMonth = ca.get(Calendar.DAY_OF_MONTH);
System.out.printf("今天是本月的第%d天%n", dayOfMonth);//今天是本月的第3天
// 获取今天是今年的第几天
int many = ca.get(Calendar.DAY_OF_YEAR); // 获取今天是今年第几天
System.out.println("今天是今年第 " + many + " 天");//今天是今年第 3 天
//设置年月日,时分秒默认采用当前值
ca.set(2012,8,8);
System.out.println(ca.getTime());//Sat Sep 08 09:02:03 CST 2012
}
}
static void m1() {
Calendar ca = Calendar.getInstance();
// 获取七天前的日期
ca.add(Calendar.DATE, -7);
//日历类转为Date类
Date da = ca.getTime();
System.out.println(da);//ed Dec 27 09:08:23 CST 2023
// 日历类获取时间戳
long timeInMillis = ca.getTimeInMillis();
System.out.printf("%tF%<tT%n",timeInMillis);//2023-12-2709:10:52
}