Мне нужна помощь, чтобы определить, является ли текущая дата раньше дня недели и не упадет ли целевая дата после определенного дня - PullRequest
0 голосов
/ 03 мая 2019

Учитывая строку даты (2019-05-03 17:56:00) мне нужно выяснить, не является ли текущая дата до 17:00 во вторник и не является ли целевая дата (выше) до следующей среды. Надеюсь, это не смущает.

Я подумал о том, чтобы просто взять день недели и сравнить сегодняшнее и целевое значения, но затем я понял, что ему присущи некоторые логические блоки.

У нас есть конвейер jenkins, создающий изменение сервиса, и наши обычные изменения должны проходить через CAB. Заседания CAB проводятся по средам с предельным сроком смены накануне вечером. Если кто-то запускает работу, намеченную на понедельник, но сегодня среда, он явно пропустит процесс CAB. Я использую SimpleDateFormat для разбора даты.

У меня проблема с логическим тестированием: if (сегодня> вторник и цель <следующая среда) { ПОТЕРПЕТЬ ПОРАЖЕНИЕ } </p>

1 Ответ

0 голосов
/ 04 мая 2019

Я не совсем уверен, о чем идет речь, но позвольте мне дать вам некоторые строительные блоки Groovy, которые, надеюсь, позволят вам написать необходимую логику. Для всех приведенных ниже фрагментов требуется скрипт import java.time.*

До 17:00?

boolean isBefore5pm = LocalTime.now().hour <= 17

Это вторник?

boolean isTuesday = LocalDate.now().dayOfWeek == DayOfWeek.TUESDAY

Возможно, выполнение некоторого сочетания вышеперечисленного поможет вам определить ответ на ваш первый вопрос. Что касается второй части.

Какая дата в следующую среду?

Учитывая эту функцию общего назначения, которая берет день недели и возвращает следующую дату, приходящуюся на этот день ...

LocalDate nextDayOfWeekFrom(LocalDate date, DayOfWeek dow) {
    int daysTil = dow.value - date.dayOfWeek.value
    date + (daysTil + (daysTil <= 0 ? 7 : 0))
}

... вы можете определить следующую среду, позвонив по номеру

def nextWednesday = nextDayOfWeekFrom(LocalDate.now(), DayOfWeek.WEDNESDAY)

Когда наступит следующий срок CAB?

def cabDeadline = LocalDateTime.of(nextDayOfWeekFrom(LocalDate.now(), DayOfWeek.TUESDAY), 
                                   LocalTime.of(17, 0))

Надеюсь, это поможет.

...