之前一个同事的写法是这样的(绿色的):
public static final String GENERAL_PATTERN_2 = "yyyy-MM-dd HH:mm:ss";
其实没必要这样,在vo里面的set方法做个赋值:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
这样不行,因为这里的createtime是string的,不能这样写(如果createtime属性是Date类型,给String类型的createtimeStr 属性赋值 可以这样写,createtimeStr这个字段值常用于前端展示~ 不用再在前端处理),写了访问报500错:
那就这样写:
publicString getCreatetime() { try{ returnDateUtils.getStringDate(DateUtils.stringToDate(createtime, DateUtil.GENERAL_PATTERN_2)); } catch(ParseException e) { e.printStackTrace(); } returncreatetime; }
重要工具类DateUtils.java具体代码如下
importjava.math.BigDecimal; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.GregorianCalendar; public classDateUtils { private static final int BIN_DIGITS = 12; public static final short ONE_MS = 1 <<BIN_DIGITS; public staticString getDatePattern() { return "yyyy-MM-dd"; } public staticString getTimePattern() { return "yyyy-MM-dd HH:mm:ss"; } public staticString getDatePattern8() { return "yyyyMMdd"; } public staticString getTimePattern14() { return "yyyyMMddHHmmss"; } public static Date getDateTime(Date date, String format) throwsParseException { SimpleDateFormat df = newSimpleDateFormat(format); String strDate =df.format(date); Calendar cal = newGregorianCalendar(); cal.setTime(stringToDate(strDate, format)); returncal.getTime(); } public static intgetYear() { returnCalendar.getInstance().get(Calendar.YEAR); } public static intgetYear(Date date) { Calendar cal = newGregorianCalendar(); cal.setTime(date); returncal.get(Calendar.YEAR); } public static intgetMonth() { return Calendar.getInstance().get(Calendar.MONTH) + 1; } public static intgetMonth(Date date) { Calendar cal = newGregorianCalendar(); cal.setTime(date); return cal.get(Calendar.MONTH) + 1; } public static intgetDayOfMonth() { returnCalendar.getInstance().get(Calendar.DAY_OF_MONTH); } public static intgetDayOfMonth(Date date) { Calendar cal = newGregorianCalendar(); cal.setTime(date); returncal.get(Calendar.DAY_OF_MONTH); } public static final Date stringToDate(String strDate, String format) throwsParseException { SimpleDateFormat df = null; Date date = null; df = newSimpleDateFormat(format); try{ date =df.parse(strDate); } catch(ParseException pe) { throw newParseException(pe.getMessage(), pe.getErrorOffset()); } return(date); } public static Date stringToDate(String strDate) throwsParseException { Date aDate = null; try{ aDate =stringToDate(strDate, getDatePattern()); } catch(ParseException pe) { pe.printStackTrace(); throw newParseException(pe.getMessage(), pe.getErrorOffset()); } returnaDate; } public static finalString dateToString(Date aDate, String format) { SimpleDateFormat df = null; String returnValue = ""; if (aDate == null) { // } else{ df = newSimpleDateFormat(format); returnValue =df.format(aDate); } return(returnValue); } public static finalString getStringDate(Date date) { SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); returnformat1.format(date.getTime()); } public static finalString dateToString(Date aDate) { returndateToString(aDate, getDatePattern()); } public static finalString timeToString(Date aDate) { returndateToString(aDate, getTimePattern()); } public static Date getDate(Date aDate) throwsParseException { returngetDateTime(aDate, getDatePattern()); } public static Date getTime(Date aDate) throwsParseException { returngetDateTime(aDate, getTimePattern()); } public static longgetDaysBetween(Date dtFrom, Date dtEnd) { long begin =dtFrom.getTime(); long end =dtEnd.getTime(); long inter = end -begin; if (inter < 0) { inter = inter * (-1); } long dateMillSec = 24 * 60 * 60 * 1000; long dateCnt = inter /dateMillSec; long remainder = inter %dateMillSec; if (remainder != 0) { dateCnt++; } returndateCnt; } public static longgetMinsBetween(Date dtFrom, Date dtEnd) { long begin =dtFrom.getTime(); long end =dtEnd.getTime(); long inter = end -begin; return inter / 60000; } public static String getLastDateOfyearAndMonth(String yearAndMonth) throwsException { String start = yearAndMonth + "01"; Date startDate = DateUtils.stringToDate(start, "yyyyMMdd"); Calendar calendar =Calendar.getInstance(); calendar.setTime(startDate); calendar.add(Calendar.MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); String end = DateUtils.dateToString(calendar.getTime(), "yyyyMMdd"); returnend; } public static String getNextMonthString(String strDate, String format) throwsParseException { Date date =stringToDate(strDate, format); Calendar cal = newGregorianCalendar(); cal.setTime(date); cal.add(Calendar.MONTH, 1); returndateToString(cal.getTime(), format); } /*** 获取上个月的最后一天 * * @paramdate * @return* @throwsParseException */ public static Date getLastDayOfLastMonth(Date date) throwsParseException { String str_firstDay = dateToString(date, "yyyyMM") + "01"; Date date_firstDay = stringToDate(str_firstDay, "yyyyMMdd"); if (date_firstDay != null) { Calendar cal =Calendar.getInstance(); cal.setTime(date_firstDay); cal.add(Calendar.DAY_OF_MONTH, -1); returncal.getTime(); } return null; } /*** 获取上个月的最后一天 * * @paramdate * @return* @throwsParseException */ public static String getLastDayOfLastMonth(Date date, String format) throwsParseException { returndateToString(getLastDayOfLastMonth(date), format); } /*** 获取传入时间所在月的最后一天 * * @paramdate * @return */ public static intgetLastDay(Date date) { Calendar calendar =Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); returncalendar.get(Calendar.DAY_OF_MONTH); } /*** 获取指定时间下个月的第一天零时00:00:00 * * @paramdate * @return */ public staticDate getNextMonthFirstDay(Date date) { Calendar calendar =Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); returncalendar.getTime(); } public staticDate getMonthLastDay(Date date) { Calendar calendar =Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); returncalendar.getTime(); } /*** 获取一个月的开始时间 * * @paramdate * @return */ public staticDate getMonthFirstDay(Date date) { Calendar calendar =Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); returncalendar.getTime(); } /*** 当前时间是否在抽奖的有效时间内 * * @return */ public static booleanraffleEffectiveTime() { boolean effective = false; try{ Date begin = DateUtils.stringToDate("20130701000000", "yyyyMMddHHmmss"); Date end = DateUtils.stringToDate("20131001000000", "yyyyMMddHHmmss"); Date current = newDate(); if (current.compareTo(begin) == 1 && current.compareTo(end) == -1) { return true; } } catch(ParseException e) { e.printStackTrace(); } returneffective; } /*** 将源格式字符串日期转换成目标格式字符串日期 * * @paramorigStrDate 字符串日期 * @paramorigFormat 源格式 * @paramdestFormat 目标格式 * @return* @throwsParseException */ public static final String dateStrToString(String origStrDate, String origFormat, String destFormat) throwsParseException { Date origDate =stringToDate(origStrDate, origFormat); returndateToString(origDate, destFormat); } //季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月 private static int getQuarterInMonth(int month, booleanisQuarterStart) { int months[] = { 1, 4, 7, 10}; if (!isQuarterStart) { months = new int[] { 3, 6, 9, 12}; } if (month >= 2 && month <= 4) return months[0]; else if (month >= 5 && month <= 7) return months[1]; else if (month >= 8 && month <= 10) return months[2]; else return months[3]; } //获得本周一与当前日期相差的天数 public static intgetMondayPlus() { Calendar cd =Calendar.getInstance(); int dayOfWeek =cd.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == 1) { return -6; } else{ return 2 -dayOfWeek; } } //获得当前周- 周一的日期 public staticDate getCurrentMonday() { Calendar cal =Calendar.getInstance(); cal.setTime(getThisWeekMonday(newDate())); cal.add(Calendar.DATE, -7); returncal.getTime(); } public staticDate getThisWeekMonday(Date date) { Calendar cal =Calendar.getInstance(); cal.setTime(date); //获得当前日期是一个星期的第几天 int dayWeek =cal.get(Calendar.DAY_OF_WEEK); if (1 ==dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } //设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); //获得当前日期是一个星期的第几天 int day =cal.get(Calendar.DAY_OF_WEEK); //根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() -day); returncal.getTime(); } /*** 获得当月起始时间 * * @return */ public staticDate getStartMounth(Date date) { Calendar calendar =Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); returncalendar.getTime(); } /*** 获取当前季度 起始时间 * * @return */ public staticDate getStartQuarter(Date date) { SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c =Calendar.getInstance(); int currentMonth = c.get(Calendar.MONTH) + 1; Date now = null; try{ if (currentMonth >= 1 && currentMonth <= 3) c.set(Calendar.MONTH, 0); else if (currentMonth >= 4 && currentMonth <= 6) c.set(Calendar.MONTH, 3); else if (currentMonth >= 7 && currentMonth <= 9) c.set(Calendar.MONTH, 4); else if (currentMonth >= 10 && currentMonth <= 12) c.set(Calendar.MONTH, 9); c.set(Calendar.DATE, 1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"); } catch(Exception e) { e.printStackTrace(); } returnnow; } /*** 获取当年起始时间 */ public staticDate getStartYear(Date date) { Calendar currCal =Calendar.getInstance(); int currentYear =currCal.get(Calendar.YEAR); returngetYearFirst(currentYear); } /*** 获取某年第一天日期 * * @paramyear 年份 * @returnDate */ public static Date getYearFirst(intyear) { Calendar calendar =Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); Date currYearFirst =calendar.getTime(); returncurrYearFirst; } public static void main(String[] args) throwsParseException { //boolean effective=false; //try { //Date d=getMonthFirstDay(new Date()); //System.out.println(DateUtils.dateToString(d, "yyyyMMddHHmmsswww")); //} catch (Exception e) { //e.printStackTrace(); //} Date receiveTime = DateUtils.stringToDate("20131226", "yyyyMMdd"); Calendar calendar =Calendar.getInstance(); calendar.setTime(receiveTime); int week =calendar.get(Calendar.DAY_OF_WEEK); if (week <Calendar.WEDNESDAY) { calendar.add(Calendar.DATE, -14); } else{ calendar.add(Calendar.DATE, -7); } calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); Date effectiveStart =calendar.getTime(); Date effectiveEnd =receiveTime; System.out.println(DateUtils.dateToString(effectiveStart, "yyyyMMddHHmmsswww")); System.out.println(DateUtils.dateToString(effectiveEnd, "yyyyMMddHHmmsswww")); } /*** 获取两个时间秒差数(带毫秒数) * * @paramdtFrom * @paramdtEnd * @return */ public static doublegetSecsBetweenD(Date dtFrom, Date dtEnd) { BigDecimal begin = newBigDecimal(dtFrom.getTime()); BigDecimal end = newBigDecimal(dtEnd.getTime()); BigDecimal inter =end.subtract(begin); return inter.divide(new BigDecimal("1000")).doubleValue(); } }