Существует ли хороший способ получить дату прибытия в среду?

Существует ли хороший способ получить дату прибытия в среду? Таким образом, если сегодня вторник, я хочу получить дату среды на этой неделе; если сегодня среда, я хочу получить дату следующей среды; если сегодня четверг, я хочу получить дату среды на следующей неделе.

Спасибо.

10
задан EboMike 12 August 2010 в 00:53
поделиться

3 ответа

Базовый алгоритм следующий:

  • Получить текущую дату
  • Получить день недели
  • Найти разницу со средой
  • Если разница не положительна, добавить 7 (т.е. настаивать на следующей наступающей / будущей дате)
  • Добавить разницу

Вот фрагмент, чтобы показать, как это сделать с помощью 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 г.» .

Ссылки API

27
ответ дан 3 December 2019 в 13:29
поделиться

Использование 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));
4
ответ дан 3 December 2019 в 13:29
поделиться

Используйте java.util.Calendar. Вы получите текущую дату / время следующим образом:

Calendar date = Calendar.getInstance();

Оттуда получите date.get (Calendar.DAY_OF_WEEK) , чтобы получить текущий день недели и получить разницу в Calendar.WEDNESDAY и сложите его.

3
ответ дан 3 December 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: