java日期时间操作汇总

首先需要这两个jdk自带工具类

java.util.Calendar;
java.util.Date;
/**
 * 获得指定日期的后N天
 * @param
 * @return
 */
public static Date getSpecifiedDayAfter(Date date,int num){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   int day=c.get(Calendar.DATE);
   c.set(Calendar.DATE,day+num);
   return c.getTime();
}
/**
 * 获得指定日期的前N天
 *
 * @param
 * @return
 */
public static Date getSpecifiedDayBefore(Date date, int num) {
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   int day = c.get(Calendar.DATE);
   c.set(Calendar.DATE, day - num);
   return c.getTime();
}
/**
 * 比较两个时间大小
 * @param first
 * @param second
 * @return
 *        <0: first<second
 *        =0: first=second
 *        >0: first>second
 */
public static int compareTwoDate(Date first, Date second){
   Calendar c1= Calendar.getInstance();
   Calendar c2= Calendar.getInstance();

   c1.setTime(first);
   c2.setTime(second);

   return c1.compareTo(c2);
}
/**
 * 取得当前日期所在周的第一天
 *
 * @param date
 * @return
 */
public static Date getFirstDayOfWeek(Date date) {
   Calendar c = new GregorianCalendar();
   c.setFirstDayOfWeek(Calendar.MONDAY);
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
   return c.getTime ();
}
/**
 * 取得当前日期所在周的最后一天
 *
 * @param date
 * @return
 */
public static Date getLastDayOfWeek(Date date) {
   Calendar c = new GregorianCalendar();
   c.setFirstDayOfWeek(Calendar.MONDAY);
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
   return c.getTime();
}
/**
 * 计算日期增加或减少小时数后的日期
 * @param date
 * @param i 为负表示减多少小时
 * @return
 */
public static Date addHH(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.HOUR, i);
   return c.getTime();
}
/**
 * 计算日期增加或减少分钟数后的日期
 * @param date
 * @param i 为负表示减多少分钟
 * @return
 */
public static Date addMM(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.MINUTE, i);
   return c.getTime();
}
/**
 * 计算日期增加或减少秒数后的日期
 * @param date
 * @param i 为负表示减多少秒
 * @return
 */
public static Date addSS(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.SECOND, i);
   return c.getTime();
}

/**
 * 计算日期增加减少天数后的日期
 * @param date
 * @param i 为负表示减多少天
 * @return
 */
public static Date addDate(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.DATE, i);
   return c.getTime();
}

/**
 * 计算日期增加减少月数后的日期
 * @param date
 * @param i 为负表示减多少月
 * @return
 */
public static Date addMonth(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.MONTH, i);
   return c.getTime();
}
/**
 * 计算日期增加减少年数后的日期
 * @param date
 * @param i 为负表示减多少年
 * @return
 */
public static Date addYear(Date date,int i){
   if(date==null)return null;
   Calendar c = new GregorianCalendar();
   c.setTime(date);
   c.add(Calendar.YEAR, i);
   return c.getTime();
}
/**
 * 获得当前时间字符串
 * @param formatStr 日期格式
 * @return string yyyy-MM-dd
 */
public static String getNowDateStr(String formatStr) {
   SimpleDateFormat format = new SimpleDateFormat(formatStr);
   return format.format(getNowDate());
}

/**
 * 获得系统当前时间
 * @return Date
 */
public static Date getNowDate(){
   Calendar c = Calendar.getInstance();
   return c.getTime();
}
/**
 * 把日期按照指定格式的转化成字符串
 * @param date 日期对象
 * @param formatStr 日期格式
 * @return 字符串式的日期,格式为:yyyy-MM-dd HH:mm:ss
 */
public static String getDateTimeToString(Date date,String formatStr) {
   SimpleDateFormat format = new SimpleDateFormat(formatStr);
   return format.format(date);
}
/**
 * 获得当前时间的i分钟后(或前,用负数表示)的时间
 * @param i
 * @return
 */
public static String addMM(int i){
   Date currTime = addMM(getNowDate(),i);
   SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
   return format.format(currTime);
}

/**
 * 获得某个时间的i分钟后(或前,用负数表示)的时间
 * @param i
 * @return
 */
public static String dateAddMM(Date date, int i){
   Date currTime = addMM(date,i);
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
   return format.format(currTime);
}
/**
 * @param date 获取给定日期的起初时间 XX-XX-XX 00:00:00
 * @return date
 */
public static Date getBegin(Date date){
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   calendar.set(Calendar.HOUR_OF_DAY, 0);
   calendar.set(Calendar.MINUTE, 0);
   calendar.set(Calendar.SECOND, 0);
   return  calendar.getTime();
}

/**
 * @param date 获取给定日期的结束时间 XX-XX-XX 23:59:59
 * @return date
 */
public static Date getEnd(Date date){
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   calendar.set(Calendar.HOUR_OF_DAY, 23);
   calendar.set(Calendar.MINUTE, 59);
   calendar.set(Calendar.SECOND, 59);
   return  calendar.getTime();
}
/**
 * 计算两个日期之间的相差的天数. 计算方式:second - first
 * @param smdate   较小的时间 
 * @param bdate       较大的时间 
 * @return 相差的天数
 */
public static int daysBetween( Date smdate,Date bdate ){
   int result  = 0;
   SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
   try{
      smdate=sdf.parse(sdf.format(smdate));
      bdate=sdf.parse(sdf.format(bdate));
      Calendar cal = Calendar.getInstance();
      cal.setTime(smdate);
      long time1 = cal.getTimeInMillis();
      cal.setTime(bdate);
      long time2 = cal.getTimeInMillis();
      long between_days=(time2-time1)/(1000*3600*24);
      result = Integer.parseInt(String.valueOf(between_days));
   }
   catch(ParseException e){
      log.error("日期转化异常",e);
   }
   catch(Exception e){
      log.error("格式转化异常",e);
   }

   return   result  ;
}
/**
 * 计算两个日期之间的相差的秒数. 计算方式:second - first
 * @param smdate   较小的时间 
 * @param bdate       较大的时间 
 * @return 相差的秒数
 */
public static int secondsBetween( Date smdate, Date bdate ){
   int result  = 0;
   try{
      Calendar cal = Calendar.getInstance();
      cal.setTime(smdate);
      long time1 = cal.getTimeInMillis();
      cal.setTime(bdate);
      long time2 = cal.getTimeInMillis();
      long between_min=(time2-time1)/1000;
      result = Integer.parseInt(String.valueOf(between_min));
   }
   catch(Exception e){
      log.error("格式转化异常",e);
   }

   return   result  ;
}
/**
 * 将时间戳转换为date
 * @param seconds
 * @return
 */
public static Date getTimestampToDate(long seconds ){
   Calendar calendar = Calendar.getInstance();
   calendar.setTimeInMillis( seconds );

   return calendar.getTime()  ;
}


/**
 * 将date转时间戳
 * @param date
 * @return
 */
public static long getDateToTimestamp(Date date) {
   long unixTimestamp = date.getTime() / 1000;
   return unixTimestamp;
}
/**
    * 判断两个日期是否在同一个月份
    *
    * @param date1
    * @param date2
    * @return
    */
   @SuppressWarnings("deprecation")
public static boolean inSameMonth(Date date1, Date date2) {
       if (date1 == null || date2 == null) {
           return false;
       }
       if (date1.getYear() == date2.getYear() && date1.getMonth() == date2.getMonth()) {
           return true;
       } else {
           return false;
       }
   }

/**
 * 根据日期取得星期几
 *
 * @param date
 * @return
 */
public static String getWeek(Date date){
   String[] weekArr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
   Calendar cal = Calendar.getInstance();
   cal.setTime(date);
   int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
   if(week_index < 0 || week_index > 6){
      return "";
   }
   return weekArr[week_index];
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值