「Groovy」- 处理日期时间

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:在 Apache Groovy 中,与时间有关的常用操作。

解决方案

String => Date(“万能方法”)

很多时候,我们使用的日期格式比较随意,因此需要告诉 Parser 我们的日期格式:

def input = '2021-03-23T19:46:22+08:00'
def pattern = "yyyy-MM-dd'T'HH:mm:ssX"
def date = Date.parse(pattern, input)
assert date.toString() == 'Tue Mar 23 19:46:22 CST 2021'

// T:因为这里 T 是普通字符,所以需要使用 ' 进行转义处理
// X:ISO 8601 time zone,参考 Java 7 / java.text.SimpleDateFormat 文档。

将时间增加若干长度(e.g. currentDate + 5 seconds)

import groovy.time.TimeCategory

currentDate =  new Date()
use( TimeCategory ) {
    after30Mins = currentDate + 5.seconds
}

判断当前是否在某个范围内

public Boolean nowBetween(String beg, String end, String format = "HH:mm") {
	def timeBeg = new SimpleDateFormat(format).parse(beg);
	def timeEnd = new SimpleDateFormat(format).parse(end);
	def timeRange = timeBeg..timeEnd;

	def timeNow = new SimpleDateFormat(format).format(new Date());
	def time = new SimpleDateFormat(format).parse(timeNow);

	return timeRange.containsWithinBounds(time);
}

参考文献

Groovy – Dates & Times – Tutorialspoint
DateTimeExtensions (Groovy 3.0.6)
SimpleDateFormat (Java Platform SE 7 )
date – Java SimpleDateFormat for time zone with a colon separator? – Stack Overflow
datetime – Incrementing date object by hours/minutes in Groovy – Stack Overflow