日期类型与字符串类型相互转换工具类

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat;

/**
 * 日期类型与字符串类型相互转换工具类
 * @author xiaoqz
 * @since 2008-8
 */
public class DateUtils {
 
 /**
     * Number of milliseconds in a standard second.
     */
    public static final long MILLIS_PER_SECOND = 1000;
    /**
     * Number of milliseconds in a standard minute.
     */
    public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND;
    /**
     * Number of milliseconds in a standard hour.
     */
    public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE;
    /**
     * Number of milliseconds in a standard day.
     */
    public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;
   
    /**
     * ISO8601 formatter for date without time zone.
     * The format used is <tt>yyyy-MM-dd</tt>.
     */
    public static final FastDateFormat DATE_FORMAT = FastDateFormat.getInstance("yyyy-MM-dd");
   
    /**
     * ISO8601 formatter for date-time without time zone.
     * The format used is <tt>yyyy-MM-dd HH:mm:ss</tt>.
     */
    public static final FastDateFormat DATETIME_FORMAT = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
   
    /**
     * Compact ISO8601 date format yyyyMMdd
     */
    public static final String COMPACT_DATE_FORMAT_PATTERN  = "yyyyMMdd";

    /**
     * ISO8601 date format: yyyy-MM-dd
     */
    public static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd";

    /**
     * ISO8601 date-time format: yyyy-MM-dd HH:mm:ss
     */
    public static String DATETIME_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
   
   
   
   
    public static Date parse(String str) {
     return parse(str, DATE_FORMAT_PATTERN);
    }
   
    public static Date parse(String str, String pattern) {
     if (StringUtils.isBlank(str)) {
      return null;
     }
     DateFormat parser = new SimpleDateFormat(pattern);
     try {
   return parser.parse(str);
  } catch (ParseException e) {
   throw new IllegalArgumentException("Can't parse " + str + " using " + pattern);
  }
    }
   
    /**
  * 根据时间变量返回时间字符串
  */
    public static String format(Date date, String pattern) {
  if (date == null) {
   return null;
  }
  FastDateFormat df = FastDateFormat.getInstance(pattern);
        return df.format(date);
 }

    /**
  * return date format is <code>yyyy-MM-dd</code>
  */
    public static String format(Date date) {
        return date == null ? null : DATE_FORMAT.format(date);
    }
   
    /**
     * return date format is <code>yyyy-MM-dd</code>
     */
    public static String getCurrentDateAsString() {
     return DATE_FORMAT.format(new Date());
    }
   
    /**
     * return date format is <code>pattern</code>
     */
    public static String getCurrentDateAsString(String pattern) {
     FastDateFormat formatter = FastDateFormat.getInstance(pattern);
     return formatter.format(new Date());
    }
   
    /**
     * return date format is <code>yyyy-MM-dd HH:mm:ss</code>
     */
    public static String getCurrentDateTimeAsString() {
  return DATETIME_FORMAT.format(new Date());
 }
   
   
    public static Date getStartDateTimeOfCurrentMonth() {
     return getStartDateTimeOfMonth(new Date());
    }
   
    /**
     * The value of
     *  <ul>
     *   <li>Calendar.HOUR_OF_DAY
     *   <li>Calendar.MINUTE
     *   <li>Calendar.MINUTE
     *  </ul>
     * will be set 0.
     */
    public static Date getStartDateTimeOfMonth(Date date) {
     Calendar cal = Calendar.getInstance();
     cal.setTime(date);
     cal.set(Calendar.DAY_OF_MONTH, 1);
     cal.set(Calendar.HOUR_OF_DAY, 0);
     cal.set(Calendar.MINUTE, 0);
     cal.set(Calendar.SECOND, 0);
     return cal.getTime();
    }
   
    public static Date getEndDateTimeOfCurrentMonth() {
     return getEndDateTimeOfMonth(new Date());
    }
   
    public static Date getEndDateTimeOfMonth(Date date) {
     Calendar cal = Calendar.getInstance();
     cal.setTime(date);
     cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
     cal.set(Calendar.HOUR_OF_DAY, 23);
     cal.set(Calendar.MINUTE, 59);
     cal.set(Calendar.SECOND, 59);
     return cal.getTime();
    }
   
    public static Date getStartTimeOfCurrentDate() {
     return getStartTimeOfDate(new Date());
    }
   
    public static Date getStartTimeOfDate(Date date) {
     Calendar cal = Calendar.getInstance();
     cal.setTime(date);
     cal.set(Calendar.HOUR_OF_DAY, 0);
     cal.set(Calendar.MINUTE, 0);
     cal.set(Calendar.SECOND, 0);
     return cal.getTime();
    }
   
    /**
     * <tt>2005-12-27 17:58:56</tt> will be returned as
     * <tt>2005-12-27 23:59:59</tt>
     */
    public static Date getEndTimeOfCurrentDate() {
     return getEndTimeOfDate(new Date());
    }

    public static Date getEndTimeOfDate(Date date) {
     Calendar cal = Calendar.getInstance();
     cal.setTime(date);
     cal.set(Calendar.HOUR_OF_DAY, 23);
     cal.set(Calendar.MINUTE, 59);
     cal.set(Calendar.SECOND, 59);
     return cal.getTime();
    }
   
    public static Date addHours(Date date, int hours) {
     return add(date, Calendar.HOUR_OF_DAY, hours);
    }
   
    public static Date addMinutes(Date date, int minutes) {
     return add(date, Calendar.MINUTE, minutes);
    }

    public static Date addDays(Date date, int days) {
     return add(date, Calendar.DATE, days);
    }


    public static Date addMonths(Date date, int months) {
     return add(date, Calendar.MONTH, months);
    }
   
    public static Date addYears(Date date, int years) {
     return add(date, Calendar.YEAR, years);
    }
   
    private static Date add(Date date, int field, int amount) {
     Calendar cal = Calendar.getInstance();
     cal.setTime(date);
     cal.add(field, amount);
     return cal.getTime();
    }
   
    /**
     * 计算两个日期之间的天数
     */
    public static final int daysBetween(java.util.Date early, java.util.Date late) {
     Calendar ecal = Calendar.getInstance();
     Calendar lcal = Calendar.getInstance();
     ecal.setTime(early);
     lcal.setTime(late);
     
     long etime = ecal.getTimeInMillis();
     long ltime = lcal.getTimeInMillis();
     
     return (int) ((ltime - etime) / MILLIS_PER_DAY);
    }
 
 /*public static String format(Date date) {
  return format(date, "yyyy-MM-dd");
 }

 public static String format(Date date, String mask) {
  SimpleDateFormat fm = new SimpleDateFormat(mask);
  return fm.format(date);
 }

 public static Date parse(String date) {
  return parse(date, "yyyy-MM-dd");
 }

 public static Date parse(String str, String mask) {
  SimpleDateFormat fm = new SimpleDateFormat(mask);
  try {
   return fm.parse(str);
  } catch (ParseException e) {
   throw new IllegalArgumentException(e);
  }
 }*/

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值