您的位置:首页 > 编程语言 > Java开发

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

2013-02-04 15:16 633 查看
最近发现我们项目里的对日期时间操作的工具类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

-----------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: