public static void main(String[] args) throws ParseException {
/*
Calendar c1=parseStringToCalendar("20111201", "yyyyMMdd");
Calendar c2=parseStringToCalendar("20121228", "yyyyMMdd");
Date d=new Date();
int i= c2.getFirstDayOfWeek();
int j=c2.get(Calendar.WEEK_OF_YEAR);
int k=c2.get(Calendar.DAY_OF_WEEK);
System.out.println(j);
System.out.println(k);
*/
/*
* get(int xxx);
* WEEK_OF_YEAR 一年中的第几个星期
* MONTH一年中的第几个月从0开始
* DAY_OF_WEEK一个星期的星期几,1对应星期天,7对应星期六
* DAY_OF_MONTH,DAY当月的第几天
* HOUR_OF_DAY 24小时制的小时
* HOUR 12小时制的小时
* MINUTE 分钟
* SECOND 秒
*
*/
/*
Calendar c1=parseStringToCalendar("20111201", "yyyyMMdd");
Calendar c2=(Calendar) c1.clone();
c2.add(Calendar.DATE, 1);
System.out.println(c1==c2);
System.out.println(c2.get(Calendar.DATE));
System.out.println(c1.get(Calendar.DATE));
*/
/*
* 查看两个日期是否满一年,比如入职是否满一年,公司规定满一年才有年假
* 比如劳动合同法,公司无缘无故开除,满一年的工龄多赔偿一个月的工资
*/
Calendar c1=parseStringToCalendar("20110607", "yyyyMMdd");
Calendar c2=parseStringToCalendar("20150605", "yyyyMMdd");
System.out.println(differFactYear(c1, c2));
}
/**
*
* @param dateStr
* @param dateFormat
* @return
* @throws ParseException
*/
static Calendar parseStringToCalendar(String dateStr,String dateFormat) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
Date date=sdf.parse(dateStr);
Calendar calendar=Calendar.getInstance();//以系统当前时间初始化Calendar实例
calendar.clear();//在setXXX方法之前一定要清除当前系统时间的信息
calendar.setTime(date);
return calendar;
}
/**
* 比较两个时间的年份
* 比如20120506和20130101其实是两个年份,但是这并不满一年
* @param startCalendar
* @param endCalendar
* @return
*/
static int differYear(Calendar startCalendar,Calendar endCalendar){
return endCalendar.get(Calendar.YEAR)-startCalendar.get(Calendar.YEAR);
}
/**
* 不满一年的舍去,返回满一年的年数
* 但是有临界值比如20120101到20121231满一年,20120607到20130606也满一年
*
* @param startCalendar
* @param endCalendar
* @return
*/
static int differFactYear(Calendar startCalendar,Calendar endCalendar){
// 20120101 20121231 20121025 20131024
Calendar cloneStart = (Calendar) startCalendar.clone();
cloneStart.add(Calendar.DATE, -1);
int year = differYear(cloneStart, endCalendar);
cloneStart.add(Calendar.YEAR, year);
//不满一年的减去1
if(cloneStart.after(endCalendar)){
return year-1;
}
//满一年的
return year;
}
/**
* 比较两个时间相差多少天
* @param startCalendar
* @param endCalendar
* @return
*/
static int dfferDay(Calendar startCalendar,Calendar endCalendar){
long start =startCalendar.getTimeInMillis();//取得毫秒数
long end =endCalendar.getTimeInMillis();
/**
* 一天 24*60*60*1000 24小时*60分钟*60秒*1000毫秒
*/
return (int) ((start-end)/(24*60*60*1000));
}