Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。
Calendar 与 Date 的转换非常简单:
Calendar cal = Calendar.getInstance();
// 从一个 Calendar对象中获取 Date 对象
Date date = cal.getTime();
//将 Date对象放到一个 Calendar对象中,Calendar/GregorianCalendar没有构造函数可以接受 Date对象 ,
//所以我们必需先获得一个实例,然后设置 Date对象
calendar.setTime(date);
1.int year =cal.get(Calendar.YEAR);
//月份是从0开始
2.int month=cal.get(Calendar.MONTH)+1;
3.int day=cal.get(Calendar.DAY_OF_MONTH);
4.int hour=cal.get(Calendar.HOUR_OF_DAY);
5.int minute=cal.get(Calendar.MINUTE);
6.int seconds=cal.get(Calendar.SECOND);
7.cal.set(Calendar.YEAR,2010);
8.cal.set(Calendar.MONTH,0);
9.cal.set(Calendar.DAY_OF_MONTH,1);
10.cal.set(Calendar.HOUR_OF_DAY,0);
11.cal.set(Calendar.MINUTE,0);
12.cal.set(Calendar.SECOND,0);
//加一天
13.cal.add(Calendar.DAY_OF_MONTH,1);
//减一个月
13.cal.add(Calendar.MONTH,-1);
public class Date_Preocessing {
// 设置时间格式
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
// 获取当前时间
Date date = new Date();
startWeek(date);
startMonth(date);
startYear(date);
}
// 获取本周开始时间
public static void startWeek(Date date) {
// 使用Calendar类进行时间的计算
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 获得当前日期是一个星期的第几天
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会计算到下一周去。
// dayWeek值(1、2、3...)对应周日,周一,周二...
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayWeek == 1) {
dayWeek = 7;
} else {
dayWeek -= 1;
}
System.out.println("前时间是本周的第几天:" + dayWeek); // 输出要当前时间是本周的第几天
// 计算本周开始的时间
cal.add(Calendar.DAY_OF_MONTH, 1 - dayWeek);
Date startDate = cal.getTime();
System.out.println("本周开始时间(周一):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
}
// 获取本月的开始时间
public static void startMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 设置为1号,当前日期既为本月第一天
cal.set(Calendar.DAY_OF_MONTH, 1);
Date startDate = cal.getTime();
System.out.println("本月开始时间(1号):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
}
// 获取本按的开始时间
public static void startYear(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 设置月和日都为1,即为开始时间(注:月份是从0开始;日中0表示上个月最后一天,1表示本月开始第一天)
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date startDate = cal.getTime();
System.out.println("今年开始时间(1月1号):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
}
}