# 日期相加
簡易版:
```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`