Я просматриваю код на работе и сталкиваюсь с несогласованностью в том, как код обрабатывает добавление 1 недели к текущему времени и задавался вопросом, есть ли какая-то причина, по которой действительно нужно быть предпочтительнее другого:
Первым был метод утилиты:
public static Date addDaysToDate(final Date date, int noOfDays) {
Date newDate = new Date(date.getTime());
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(newDate);
calendar.add(Calendar.DATE, noOfDays);
newDate.setTime(calendar.getTime().getTime());
return newDate;
}
И вторая использовала простую миллисекундную арифметику:
long theFuture = System.currentTimeMillis() + (86400 * 7 * 1000);
Date nextWeek = new Date(theFuture);
Второй метод, очевидно, использует "магические числа" для определения недели, но это может быть перемещено в константу MILLISECONDS_IN_ONE_WEEK = 86400 * 7 * 1000
Так, кроме этого, есть ли причины, по которым один из этих методов должен быть предпочтительнее другого?
В основном я хочу изменить код, чтобы он был согласованным во всем, но я не совсем уверен, какой из них удалить. Поэтому любые аргументы так или иначе будут полезны.