我需要帮助来确定当前日期是否在一周的某一天之前,并且目标日期是否在特定的一天之后

时间:2019-05-03 18:39:27

标签: groovy jenkins-pipeline

给出一个日期字符串(2019-05-03 17:56:00)我需要确定当前日期是否在星期二的下午5点之前,以及目标日期(在上面)是否在下一个星期三之前。我希望不要混淆。

我考虑过要把星期几与今天和目标进行比较,但是后来我意识到其中有些固有的逻辑块。

我们有一个詹金斯管道正在创建服务,现在需要更改,而我们的正常更改必须通过CAB。 CAB会议在星期三进行,更改截止日期为前一天晚上。如果有人从事的工作是星期一,而今天是星期三,那么他们显然会错过CAB流程。我正在使用SimpleDateFormat来解析日期。

我在逻辑上对此进行测试时遇到问题:     如果(今天>周二,目标<下周三){         失败     }

1 个答案:

答案 0 :(得分:0)

我不确定要问什么,但是让我给您一些Groovy构建块,希望它们可以编写您所需的逻辑。以下所有代码段均要求脚本import java.time.*

是下午5点之前吗?

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))

希望这会有所帮助。