Существует ли хороший способ получить дату прибытия в среду? Таким образом, если сегодня вторник, я хочу получить дату среды на этой неделе; если сегодня среда, я хочу получить дату следующей среды; если сегодня четверг, я хочу получить дату среды на следующей неделе.
Спасибо.
Базовый алгоритм следующий:
Вот фрагмент, чтобы показать, как это сделать с помощью java.util.Calendar
:
import java.util.Calendar;
public class NextWednesday {
public static Calendar nextDayOfWeek(int dow) {
Calendar date = Calendar.getInstance();
int diff = dow - date.get(Calendar.DAY_OF_WEEK);
if (diff <= 0) {
diff += 7;
}
date.add(Calendar.DAY_OF_MONTH, diff);
return date;
}
public static void main(String[] args) {
System.out.printf(
"%ta, %<tb %<te, %<tY",
nextDayOfWeek(Calendar.WEDNESDAY)
);
}
}
Относительно моего здесь и теперь результат приведенного выше фрагмента - «среда, 18 августа 2010 г.»
.
java.util.Calendar
java.util.Formatter
- для синтаксиса строки форматирования Использование JodaTime:
LocalDate date = new LocalDate(System.currentTimeMillis());
Period period = Period.fieldDifference(date, date.withDayOfWeek(DateTimeConstants.WEDNESDAY));
int days = period.getDays();
if (days < 1) {
days = days + 7;
}
System.out.println(date.plusDays(days));
Используйте java.util.Calendar. Вы получите текущую дату / время следующим образом:
Calendar date = Calendar.getInstance();
Оттуда получите date.get (Calendar.DAY_OF_WEEK)
, чтобы получить текущий день недели и получить разницу в Calendar.WEDNESDAY
и сложите его.