Как пропустить выходные (суббота и воскресенье) из календаря на весь месяц - PullRequest
0 голосов
/ 17 апреля 2019

Попытка пропустить выходные дни из календаря месяца

Calendar cal = Calendar.getInstance();
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
for (int i = 0; i < dayOfMonth; i++) {
    id("prevDayTrackButton").click();
    Thread.sleep(1000);
}

Ответы [ 4 ]

2 голосов
/ 17 апреля 2019
int dayOfWeek = cal.get (Calendar.DAY_OF_WEEK);
boolean isWeekday = ((dayOfWeek >= Calendar.MONDAY) && (dayOfWeek <= Calendar.FRIDAY));

isWeekday будет false, если день недели Saturday или Sunday.

0 голосов
/ 17 апреля 2019
    LocalDate myDate = LocalDate.of(2019, 4, 13);//LocalDate.parse("2019-04-13");
    DayOfWeek dayOfWeek = myDate.getDayOfWeek();
    int dayOfWeekIntValue = dayOfWeek.getValue();
    System.out.println(dayOfWeekIntValue);
    String dayOfWeekName = dayOfWeek.name();
    System.out.println(dayOfWeekName);
    boolean isWeekday = (dayOfWeekIntValue >= 1 && dayOfWeekIntValue <= 5);//Day is between MONDAY and FRIDAY, return true
    System.out.println(isWeekday);

Вместо старого Date класса используйте LocalDate.

0 голосов
/ 17 апреля 2019

java.time

    LocalDate today = LocalDate.now(ZoneId.of("Pacific/Wallis"));
    for (LocalDate d = today.withDayOfMonth(1); d.isBefore(today); d = d.plusDays(1)) {
        DayOfWeek dow = d.getDayOfWeek();
        if (! dow.equals(DayOfWeek.SATURDAY) && ! dow.equals(DayOfWeek.SUNDAY)) {
            id("prevDayTrackButton").click();
            TimeUnit.SECONDS.sleep(1);
        }
    }

Если вы хотите использовать потоковую операцию:

    today.withDayOfMonth(1)
            .datesUntil(today)
            .filter(d -> ! d.getDayOfWeek().equals(DayOfWeek.SATURDAY)
                            && ! d.getDayOfWeek().equals(DayOfWeek.SUNDAY))
            .forEach(d -> {
                id("prevDayTrackButton").click();
                TimeUnit.SECONDS.sleep(1);
            });

Я не думаю, что в этом случае мы что-то покупаем.

Класс Calendar, который вы использовали, давно устарел и плохо спроектирован. Вместо этого я использую java.time, современный Java-интерфейс даты и времени.

Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.

0 голосов
/ 17 апреля 2019
Calendar cal = Calendar.getInstance();
boolean isWeekend;
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || 
      cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
     isWeekend = true;
}
...