Calendar类常用

来源:互联网 发布:身份证阅读器破解软件 编辑:程序博客网 时间:2024/06/05 00:10

 

 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));
 }

原创粉丝点击