Вот оптимизация, при условии, что входное значение равно java.util.Date
, в котором вы можете просто передать java.sql.Date
и java.sql.Time
, поскольку они являются его подклассами.
public static String addToDateTime(Date date, Increment increment) throws ParseException {
Calendar calendar = calendar.getInstance();
calendar.clear();
calendar.setTime(date);
switch (increment) {
case HOURLY: calendar.add(Calendar.HOUR, 1); break;
case DAILY: calendar.add(Calendar.DATE, 1); break;
case WEEKLY: calendar.add(Calendar.WEEK_OF_YEAR, 1); break;
case DO_NOT_POLL: break;
}
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
}
public enum Increment {
HOURLY, DAILY, WEEKLY, DO_NOT_POLL;
}
, который можно использовать как
String newTimestamp = addToDateTime(timestampIn, Increment.WEEKLY);
Чтобы узнать больше о полезном enum
, посмотрите учебник Sun по предмету . Тем не менее, в соответствии с Java 7 вы должны быть в состоянии switch
на String
.
Однако я полностью согласен с советом JodaTime , вот пример:
public static String addToDateTime(Date date, Increment increment) {
DateTime dt = new DateTime(date);
switch (increment) {
case HOURLY: dt = dt.plusHours(1); break;
case DAILY: dt = dt.plusDays(1); break;
case WEEKLY: dt = dt.plusWeeks(1); break;
case DO_NOT_POLL: break;
}
return df.print(dt);
}
public enum Increment {
HOURLY, DAILY, WEEKLY, DO_NOT_POLL;
}
Разница, по общему признанию, не шокирующая, но она также имеет больше преимуществ.