关于日期时间操作工具类DateUtil(一)-----对java.util.Date 的操作.

17 篇文章 0 订阅
13 篇文章 0 订阅

最近发现我们项目里的对日期时间操作的工具类DateUtil感觉挺好用的,现在就总结一下,便于日后查看。

 /**
  * 利用指定SimpleDateFormat instance转换java.util.Date到String
  * 
  * @param dt
  *            java.util.Date instance
  * @param formatter
  *            SimpleDateFormat Instance
  * @return String
  */
 private static String toString(java.util.Date dt, SimpleDateFormat formatter) {
  String sRet = null;

  try {
   if (dt == null)
    sRet = "";
   else
    sRet = formatter.format(dt).toString();
  } catch (Exception e) {
   // e.printStackTrace();
   log.error("", e);
   sRet = null;
  }

  return sRet;
 }


-----------------------------------------------------------------------------------------------------------

System.out.println(toString(new java.util.Date(),new SimpleDateFormat("yyyyMMddHHmmss")));

输出:20130204145224

-----------------------------------------------------------------------------------------------------------

 /**
  * 日期转换为字符串
  * 
  * @param date
  * @param formatString
  * @return
  */
 public static String date2String(java.util.Date date, String formatString) {
  if (date == null || formatString == null || "".equals(formatString)) {
   return "";
  }
  String result = "";
  try {
   SimpleDateFormat formt = new SimpleDateFormat(formatString);
   result = formt.format(date);
  } catch (Exception e) {
   result = "";
   log.error("---date2String---", e);
  }

  return result;
 }


-----------------------------------------------------------------------------------------------------------

System.out.println(date2String(new java.util.Date(),"yyyy-MM-dd HH:mm:ss"));

输出:2013-02-04 14:55:27

-----------------------------------------------------------------------------------------------------------

 

 /**
  * 利用指定SimpleDateFormat instance转化String到Date
  * 
  * @param sDate
  *            Date string
  * @param formatter
  *            SimpleDateFormat instance
  * @return Date
  */
 private static java.util.Date toDate(String sDate,
   SimpleDateFormat formatter) {
  java.util.Date dt = null;
  if (sDate == null || "".equals(sDate))
   return null;
  try {
   dt = formatter.parse(sDate);
  } catch (Exception e) {
   // e.printStackTrace();
   log.error("", e);
   dt = null;
  }
  return dt;
 }


-----------------------------------------------------------------------------------------------------------

System.out.println(toDate("2013-02-01", new SimpleDateFormat("yyyy-MM-dd")));

System.out.println(date2String(toDate("2013-02-01", new SimpleDateFormat("yyyy-MM-dd")),"yyyyMMddHHmmss"));

输出:Fri Feb 01 00:00:00 CST 2013

            20130201000000

-----------------------------------------------------------------------------------------------------------

 

public static java.util.Date stringToDate(String stringDate, String format) {
  try {
   if (stringDate == null || "".equals(stringDate)) {
    stringDate = DateUtil.getSysDateString();
   }
   java.util.Date date = new SimpleDateFormat(format)
     .parse(stringDate);
   return date;
  } catch (Exception e) {
   // e.printStackTrace();
   log.error("", e);
  }
  return null;
 }


-----------------------------------------------------------------------------------------------------------

System.out.println(stringToDate("20130201170854","yyyyMMddHHmmss"));

输出:Fri Feb 01 17:08:54 CST 2013

-----------------------------------------------------------------------------------------------------------

 /**
  * 时间加年
  * 
  * @param date
  * @param year
  * @return
  */
 public static java.util.Date addYear(java.util.Date date, int year) {
  Calendar c1 = Calendar.getInstance();
  c1.setTime(date);
  c1.add(Calendar.YEAR, year);
  return c1.getTime();
 }


-----------------------------------------------------------------------------------------------------------

date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2007-03-02");

System.out.println(DateUtil.toString(addYear(date1, -1),new SimpleDateFormat(“yyyy-MM-dd HH:mm”)));

输出:2006-03-02 00:00

----------------------------------------------------------------------------------------------------------- 
 

/**
  * 时间加月
  * 
  * @param date
  * @param month
  * @return
  */
 public static java.util.Date addMonth(java.util.Date date, int month) {
  Calendar c1 = Calendar.getInstance();
  c1.setTime(date);
  c1.add(Calendar.MONTH, month);
  return c1.getTime();
 }


-----------------------------------------------------------------------------------------------------------

date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2007-03-02");

System.out.println(DateUtil.toString(addMonth(date1, 4),new SimpleDateFormat(“yyyy-MM-dd”)));

输出:2007-07-02

----------------------------------------------------------------------------------------------------------- 
 

/**
  * 在java.util.DateObject上增加/减少几天
  * 
  * @param date
  *            java.util.Date instance
  * @param days
  *            增加/减少的天数
  * @return java.util.Date Object
  */
 public static java.util.Date addDays(java.util.Date date, int days) {
  long temp = date.getTime();

  return new java.util.Date(temp + DateUtil.DAY_MILLI * days);
 }

-----------------------------------------------------------------------------------------------------------

date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2007-03-02");

System.out.println(DateUtil.toString(addDays(date1, 7),new SimpleDateFormat(“yyyy-MM-dd”)));

输出:2007-03-09

----------------------------------------------------------------------------------------------------------- 

 public static java.util.Date addHour(java.util.Date date, int hour) {
  Calendar c1 = Calendar.getInstance();
  c1.setTime(date);
  c1.add(Calendar.HOUR, hour);
  return c1.getTime();
 }


 -----------------------------------------------------------------------------------------------------------

date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2007-03-02");

System.out.println(DateUtil.toString(addHour(date1, 7),new SimpleDateFormat(“yyyy-MM-dd HH:mm”)));

输出:2007-03-02 02:00

----------------------------------------------------------------------------------------------------------- 

 
 

/**
  * 两个日期之间相差多少月
  * 
  * @param begin
  *            java.util.Date instance
  * @param end
  *       java.util.Date instance
  * @return  int
  */
        public static int getPassMonths(java.util.Date begin, java.util.Date end) {
  Calendar c1 = Calendar.getInstance();
  c1.setTime(begin);
  Calendar c2 = Calendar.getInstance();
  c2.setTime(end);
  int years = 12 * (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR));
  int months = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
  int days = c2.get(Calendar.DATE) - c1.get(Calendar.DATE);

  if (days <= 0) {
   if (years == 0 && months == 0) {
    return 1;
   } else {
    return years + months;
   }
  } else {
   if (years == 0 && months == 0) {
    return 1;
   } else {
    return years + months + 1;
   }
  }
  }


 -----------------------------------------------------------------------------------------------------------

  date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2007-03-02");
   date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");

System.out.println(getPassMonths(date1,date2));

输出:14

----------------------------------------------------------------------------------------------------------- 

  /**
  * 判断两个时间是否为同一时间
  * 
  * @param date1
  * @param date2
  * @param formatString
  * @return
  */
 public static boolean isSameDate(java.util.Date date1,
   java.util.Date date2, String formatString) {
  boolean result = false;
  try {
   SimpleDateFormat formt1 = new SimpleDateFormat(formatString);
   String str1 = formt1.format(date1);
   String str2 = formt1.format(date2);
   if (str1 == null || str2 == null) {
    return false;
   }
   if (str1.equals(str2)) {
    result = true;
   }
  } catch (Exception e) {
   result = false;
   log.error("---isSameDate---", e);
  }
  return result;
 }

 -----------------------------------------------------------------------------------------------------------

   date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
   date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");

System.out.println(isSameDate(date1,date2,"yyyy-MM-dd"));

输出:true

-----------------------------------------------------------------------------------------------------------  

 /**
  * 获得指定日期的前一天
  * 
  * @param Day
  * @return
  */
 public static java.sql.Date getDayBefore(java.util.Date date) {
  Calendar c = Calendar.getInstance();

  c.setTime(date);
  int nday = c.get(Calendar.DATE);
  c.set(Calendar.DATE, nday - 1);
  java.util.Date d = (java.util.Date) c.getTime();
  java.sql.Date sqlDate = new java.sql.Date(d.getTime());
  return sqlDate;
 }
 -----------------------------------------------------------------------------------------------------------

   date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
   date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");

System.out.println(getDayBefore(date1));

输出:2008-04-30

----------------------------------------------------------------------------------------------------------- 

 

 /**
  * util.date 转换为 sql.date
  * 
  * @return
  */
 public static java.sql.Date dateChange(java.util.Date date) {
  java.sql.Date sqlDate = new java.sql.Date(date.getTime());
  return sqlDate;
 }


 -----------------------------------------------------------------------------------------------------------

   System.out.println(new java.util.Date());
   System.out.println(dateChange(new java.util.Date()));

输出:Mon Feb 04 15:19:50 CST 2013
            2013-02-04

----------------------------------------------------------------------------------------------------------- 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值