# 日期相加 簡易版: ```java= private String addDays(String dateStr,String numberDays) { if(StringUtils.isBlank(dateStr) || StringUtils.isBlank(numberDays)) { return null; } int days = Integer.valueOf(numberDays); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); try { Date d = sdf.parse(dateStr); Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DATE, days); String newTime = sdf.format(c.getTime()); return newTime; }catch(ParseException e) { e.printStackTrace(); } return null; } ``` 進階版: ```java= public static Date addDays(String dateStr,String numberDays) { if(StringUtils.isBlank(dateStr) || StringUtils.isBlank(numberDays)) { return null; } int days = Integer.valueOf(numberDays); Date d = parseDate(dateStr); Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DATE, days); return c.getTime(); } public static Date parseDate(String dateString) { Date result = null; String[] dateSplit; try { if (null == dateString) { // null 不處理 } else if (dateString.matches("\\d{8}")) { result = SIMPLE_FORMAT.parse(dateString); } else if (dateString.matches("\\d{4}\\D\\d{1,2}\\D\\d{1,2}")) { dateSplit = dateString.split("\\D"); result = SIMPLE_FORMAT.parse(String.format("%1$04d%2$02d%3$02d", Integer.parseInt(dateSplit[0]), Integer.parseInt(dateSplit[1]), Integer.parseInt(dateSplit[2]))); } } catch (ParseException e) { logger.error("解析日期字串失敗! dateString: {}", dateString , e); } return result; } public static String formatDate(Date d, String pattern) { SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateTimeInstance(); df.setTimeZone(TimeZone.getDefault()); df.applyPattern(pattern); return df.format(d); } ``` ###### tags: `Java`