JAVA的dateutils处理类

import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.*;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;

/**
 * 在Hibernate Criterion查询中日期处理相关的方法
 * @author harvey
 *
 */
public class HibernateDateUtil {
 private static String yearMMpattern="yyyyMM";
 private static String datepattern="yyyy-MM-dd HH:mm:ss";
 private static String daypattern="yyyy-MM-dd";
 private static String yearpattern="yyyy";
 private static String otherpattern="yyyy-MM";
 /**
  * 等于某天
  * @param field
  * @param day
  * @return
  */
 public static Criterion eqDay(String field,Date day){
  day = DateUtils.ceiling(day, Calendar.DAY_OF_MONTH);
  Date nextday = DateUtils.addDays(day, 1);
  return Restrictions.and(Restrictions.ge(field, day), Restrictions.lt(field, nextday));
 }
 
 /**
  * 大于等于某天
  * @param field
  * @param day
  * @return
  */
 public static Criterion geDay(String field,Date day){
  day = DateUtils.ceiling(day, Calendar.DAY_OF_MONTH);
  return Restrictions.ge(field, day);
 }
 
 /**
  * 小于等于某天
  * @param field
  * @param nextday
  * @return
  */
 public static Criterion ltDay(String field,Date day){
  day = DateUtils.ceiling(day, Calendar.DAY_OF_MONTH);
  Date nextday = DateUtils.addDays(day, 1);
  return Restrictions.lt(field, nextday);
 } 
 /**
  * 获得日期的年份
  * @param date
  * @return
  */
 public static String formatYearMonth(Date date){
  if(date==null)
   return "";
  SimpleDateFormat sdf=new SimpleDateFormat(yearMMpattern);
  return sdf.format(date);
 }
 /**
  * 格式化日期
  * @param date
  * @return
  */
 public static String formatDate(Date date){
  if(date==null){
   return "";
  }
  SimpleDateFormat sdf=new SimpleDateFormat(datepattern);
  return sdf.format(date);
 }
 /**
  * 格式化日期
  * @param day
  * @return
  */
 public static String formatDay(Date date){
  if(date==null)
   return "";
  SimpleDateFormat sdf=new SimpleDateFormat(daypattern);
  return sdf.format(date);
 }
 
 /**
  * 格式化日期,获得年份
  * @param day
  * @return
  */
 public static String formatYear(Date date){
  if(date==null)
   return "";
  SimpleDateFormat sdf=new SimpleDateFormat(yearpattern);
  return sdf.format(date);
 }
 /**
  * 格式化日期,形式"yyyy-MM"
  * @param date
  * @return
  */
 public static String formatOther(Date date){
  if(date==null)
   return "";
  SimpleDateFormat sdf=new SimpleDateFormat(otherpattern);
  return sdf.format(date);
 }
 /**
  * 把字符串转换为日期类型(yyyy-mm)
  * @param strDate
  * @return
  * @throws ParseException
  */
 public static Date parseDate(String strDate) throws ParseException{
  SimpleDateFormat sdf=new SimpleDateFormat(otherpattern);
  return sdf.parse(strDate);
 }
 /**
  * 把字符串转换为日期类型(yyyy-mm-dd)
  * @param strDate
  * @return
  * @throws ParseException
  */
 public static Date parseddDate(String strDate) throws ParseException{
  SimpleDateFormat sdf=new SimpleDateFormat(daypattern);
  return sdf.parse(strDate);
 }
 
  /**
   * 返回两个日期间的差异天数
   *
   * @param date1
   *            参照日期
   * @param date2
   *            比较日期
   * @return 参照日期与比较日期之间的天数差异,正数表示参照日期在比较日期之后,0表示两个日期同天,负数表示参照日期在比较日期之前
   */

 public static long getMinusdate(String date1, String date2) {
      SimpleDateFormat formatter = new SimpleDateFormat(
        "yyyy-MM-dd HH:mm:ss");
      ParsePosition pos = new ParsePosition(0);
      ParsePosition pos1 = new ParsePosition(0);
      Date dt1 = formatter.parse(date1, pos);
      Date dt2 = formatter.parse(date2, pos1);
      long diff = dt2.getTime() - dt1.getTime();
      return (int)(diff / (1000 * 60 * 60 * 24));   
 }
  /**
   * 返回两个日期间的差异天数
   *
   * @param date1
   *            参照日期
   * @param date2
   *            比较日期
   * @return 参照日期与比较日期之间的天数差异,正数表示参照日期在比较日期之后,0表示两个日期同天,负数表示参照日期在比较日期之前
   */

 public static int dayDiff(Date date1, Date date2) {
    long diff = date1.getTime() - date2.getTime();
    return (int) (diff / (1000 * 60 * 60 * 24));
   }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值