import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; /** * Date日期公共类 * * */ public class DateUtils { /** * 返回当前日期Date类型 * * @return */ public static Date getCurDate() { return new Date(); } /** * Date日期类型转化为Timestamp类型 如果参数为空返回null * * @param date * @return */ public static Timestamp getTimestamp(Date date) { if (date == null) return null; else { return new Timestamp(date.getTime()); } } /** * 获取当前Timestamp类型时间 * * @return */ public static Timestamp getCurTimestamp() { return new Timestamp(new Date().getTime()); } /** * 字符串日期转化为“yyy-MM-dd”格式的Date日期类型 如果字符串为null则返回null * * @param dateStr * @return */ public static Date formateDate(String dateStr) { if (dateStr == null || "".equals(dateStr.trim())) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = sdf.parse(dateStr); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 字符串日期去除两端空白并返回Timestamp类型日期 如果为null或者“”则返回null * * @param tsStr * @return */ public static Timestamp formateTimeStamp(String tsStr) { if (tsStr == null || "".equals(tsStr.trim())) return null; try { Timestamp ts = Timestamp.valueOf(tsStr.trim()); return ts; } catch (Exception e) { e.printStackTrace(); } return null; } /** * Date日期类型转化为“yyyy-MM-dd”格式的字符串日期 如果为空则返回null * * @param date * @return */ public static String getDateStr(Date date) { if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(date); return dateStr; } public static String getTime2Str(Date date){ if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String dateStr = sdf.format(date); return dateStr; } /** * Timestamp日期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串日期 如果为空则返回null * * @param ts * @return */ public static String getTimestampStr(Timestamp ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tsStr = sdf.format(ts); return tsStr; } /** * Timestamp日期类型转化为“MM-dd HH:mm”格式的字符串日期 如果为空则返回null * * @param ts * @return */ public static String formatTimestamp2Str(Timestamp ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); String tsStr = sdf.format(ts); return tsStr; } /** * Date日期类型转化为“MM-dd HH:mm”格式的字符串日期 如果为空则返回null * * @param ts * @return */ public static String formatTimestamp2Str(Date ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); String tsStr = sdf.format(ts); return tsStr; } /** * Date日期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串日期 如果为空则返回null * * @param date * @return */ public static String getTimestampStr(Date date) { if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tsStr = sdf.format(date); return tsStr; } /** * 返回Date日期类型的起始时间,返回类型是Timestamp并包含秒表 2014-01-21 00:00:00.0 * * @param date * @return */ public static Timestamp getStartTimestampByDate(Date date) { if (date == null) return null; Calendar c1 = Calendar.getInstance(); c1.setTime(date); c1.set(Calendar.HOUR_OF_DAY, 0); c1.set(Calendar.MINUTE, 0); c1.set(Calendar.SECOND, 0); c1.set(Calendar.MILLISECOND, 0); return new Timestamp(c1.getTimeInMillis()); } /** * 返回Date日期类型的结束时间,返回类型是Timestamp并包含秒表 2014-01-21 23:59:59.999 * * @param date * @return */ public static Timestamp getEndTimestampByDate(Date date) { if (date == null) return null; Calendar c1 = Calendar.getInstance(); c1.setTime(date); c1.set(Calendar.HOUR_OF_DAY, 23); c1.set(Calendar.MINUTE, 59); c1.set(Calendar.SECOND, 59); c1.set(Calendar.MILLISECOND, 999); return new Timestamp(c1.getTimeInMillis()); } /** * 日期增加 并返回Date日期类型 * * @param curDate * @param count * @return */ public static Date dateAdd(Date curDate, Integer count) { if (curDate == null || count == null) return null; return new Date(curDate.getTime() + count * 24 * 60 * 60 * 1000L); } /** * 日期增加 并返回Timestamp日期类型 * * @param curTimestamp * @param count * @return */ public static Timestamp timeAddSecond(Timestamp curTimestamp, Integer count) { if (curTimestamp == null || count == null) return null; return new Timestamp(curTimestamp.getTime() + count * 1000); } /** * 两个日期相差几个月 * * @param curDate * @param oldDate * @return */ public static int dateDiffMont(Date curDate, Date oldDate) { if (curDate == null || oldDate == null) return 0; if (oldDate.getTime() >= curDate.getTime()) { return 0; } Calendar c = Calendar.getInstance(); c.setTime(curDate); int curYear = c.get(Calendar.YEAR); int curMonth = c.get(Calendar.MONTH); c.setTime(oldDate); int oldYear = c.get(Calendar.YEAR); int oldMonth = c.get(Calendar.MONTH); int result; if (curYear == oldYear) { result = curMonth - oldMonth;// 两个日期相差几个月,即月份差 } else { result = 12 * (curYear - oldYear) + curMonth - oldMonth;// 两个日期相差几个月,即月份差 } return result; } /** * 判断两个日期的大小 是返回true 否则返回false * * @param date1 * @param date2 * @return */ public static boolean compare(Date date1, Date date2) { if (date1 == null || date2 == null) return false; Calendar c1 = Calendar.getInstance(); c1.setTime(date1); c1.set(Calendar.HOUR_OF_DAY, 0); c1.set(Calendar.MINUTE, 0); c1.set(Calendar.SECOND, 0); c1.set(Calendar.MILLISECOND, 0); Calendar c2 = Calendar.getInstance(); c2.setTime(date2); c2.set(Calendar.HOUR_OF_DAY, 0); c2.set(Calendar.MINUTE, 0); c2.set(Calendar.SECOND, 0); c2.set(Calendar.MILLISECOND, 0); if (c1.getTimeInMillis() >= c2.getTimeInMillis()) return true; else return false; } /** * 返回当前日期当前月的第一天 返回类型是Timestamp 格式是“2014-01-01 00:00:00.0” * * @param curDate * @return */ public static Timestamp getFirstDayOfMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 设为当前月的1号 System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回当前日期下个月的第一天 返回类型是Timestamp 格式是“2014-02-01 00:00:00.0” * * @param curDate * @return */ public static Timestamp getFirstDayOfNextMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 设为当前月的1号 c.add(Calendar.MONTH, 1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年份的第一天 返回类型是Timestamp 格式是“2013-01-01 00:00:00.0” * * @param yearStr * ("参数格式:2013") * @return */ public static Timestamp getFirstDayOfYear(String yearStr) { if (yearStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, 0); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年份的最后一天 返回类型是Timestamp 格式是“2013-12-31 23:59:59.999” * * @param yearStr * ("参数格式:2013") * @return */ public static Timestamp getLastDayOfYear(String yearStr) { if (yearStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, 11); // c.set(Calendar.DATE, 31); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); c.set(Calendar.MILLISECOND, 999); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回本季度的第一天 返回类型是Timestamp 格式是“2013-10-01 00:00:00.0” * * @param yearStr * (例如参数:2013) * @param qurStr * (例如第XX季度:4) * @return */ public static Timestamp getFirstDayOfQuarter(String yearStr, String qurStr) { if (yearStr == null) return null; if (qurStr == null) return null; String qurTmp = ""; if ("1".equals(qurStr)) qurTmp = "0"; else if ("2".equals(qurStr)) qurTmp = "3"; else if ("3".equals(qurStr)) qurTmp = "6"; else if ("4".equals(qurStr)) qurTmp = "9"; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, new Integer(qurTmp)); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年、月份的第一天 返回类型是Timestamp 格式是“2013-04-01 00:00:00.0” * * @param yearStr * (例如参数:2013) * @param monthStr * (例如参数:4) * @return */ public static Timestamp getFirstDayOfMonth(String yearStr, String monthStr) { if (yearStr == null) return null; if (monthStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, new Integer(monthStr) - 1); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回当前日期的上个月的当前时间段 返回类型Timestamp 格式:”2013-12-21 12:15:45.096“ * * @param endTime * (例如参数:2014-01-21) * @return */ public static Timestamp getFirstDayOfPreMonth(Timestamp endTime) { Calendar c = Calendar.getInstance(); c.setTime(new Date(endTime.getTime())); System.out.println(c.getTime()); int y = c.get(Calendar.YEAR); int m = c.get(Calendar.MONTH) - 1; System.out.println(y); System.out.println(m); if (m == -1) { y = y - 1; m = 11; } c.set(Calendar.YEAR, y); c.set(Calendar.MONTH, m); return new Timestamp(c.getTimeInMillis()); } /** * 返回上一年的第一个月的第一天 返回类型Timestamp 格式:2013-01-01 00:00:00.0 * * @param curDate * @return */ public static Timestamp getPrevYearFirstDayOfMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 设为当前月的1号 c.add(Calendar.YEAR, -1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回上一年的第二个月的第一天 返回类型Timestamp 格式:2013-02-01 00:00:00.0 * * @param curDate * @return */ public static Timestamp getPrevYearFirstDayOfNextMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 设为当前月的1号 c.add(Calendar.MONTH, 1);// c.add(Calendar.YEAR, -1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回字符串日期 返回类型:string 参数类型:Timestamp 返回格式:yyyy.MM * * @param tmp * @return */ public static String cvtTimestampToStr(Timestamp tmp) { if (tmp == null) return ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM"); String timeStr = sdf.format(new Date(tmp.getTime())); System.out.println(timeStr); return timeStr; } /** * 返回字符串日期 返回类型:string 参数类型:Date 返回格式:yyyy.MM * * @param tmp * @return */ public static String cvtDateToStr(Date tmp) { if (tmp == null) return ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM"); String timeStr = sdf.format(tmp); System.out.println(timeStr); return timeStr; } /** * 返回两个日期相差多少秒 返回类型Integer 参数类型:Timestamp * * @param startTime * @param endTime * @return */ public static Integer diffTimestamp4Second(Timestamp startTime, Timestamp endTime) { if (startTime == null || endTime == null) return 0; Integer diff = new Long( (endTime.getTime() - startTime.getTime()) / 1000).intValue(); return diff; } /** * 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串 * @return */ public static String getCurrentYYYYMMDDHHMMSS() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串 * @param inputDate * @return */ public static String getYYYYMMDDHHMMSS(Date inputDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); String thisTime = new String(formatter.format(inputDate)); return thisTime; } /** * 获取当前时间格式为yyyy-MM-ddHHmmssSSS的字符串 * @return */ public static String getCurrentYYYYMMDDHHMMssSSS() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddHHmmssSSS", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 获取当前时间格式为yyyyMMddHHmmssSSS的字符串 * @return */ public static String getCurrentYYYYMMDDHHMMssSSSFormat() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 获取当前时间格式为yyyyMMddHHmmssSSS的字符串 * @return */ public static String getCurrentYYYYMMDDFormat() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 获取当前时间格式为yyyy-MM-dd的字符串 * @return */ public static String getCurrentYYYYMMDD() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 获取当前时间格式为yyyyMMddHHmmss的字符串 * @return */ public static String getCurrent_yyyyMMddHHmmss() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * yyyyMMddHHmmss转换为yyyy-MM-dd HH:mm:ss 的字符串 */ public static String getyMdHms(String str){ StringBuffer sb =new StringBuffer(); String s = str.trim(); if(!s.isEmpty()){ if(s.length()>3){ sb.append(s.substring(0, 4)); } if(s.length()>5){ sb.append("-"); sb.append(s.substring(4, 6)); } if(s.length()>7){ sb.append("-"); sb.append(s.substring(6, 8)); } if(s.length()>9){ sb.append(" "); sb.append(s.substring(8, 10)); } if(s.length()>11){ sb.append(":"); sb.append(s.substring(10, 12)); } if(s.length()>13){ sb.append(":"); sb.append(s.substring(12, 14)); } } return sb.toString(); } }