38

I want to add hours or minutes to a current date. For example I create a Date object with current time and date, and I want to increment it by 30min, how can I do such thing in Grails/Groovy ?

Date Now : Thu Jan 16 11:05:48 EST 2014
Adding 30min to Now : Thu Jan 16 11:35:48 EST 2014

I was wondering if I could do the same that we can do with add 1 to date and it moves it a day ahead.

1

3 Answers 3

74

You can use TimeCategory

import groovy.time.TimeCategory

currentDate =  new Date()

println currentDate

use( TimeCategory ) {
    after30Mins = currentDate + 30.minutes
}

println after30Mins
2
  • Link to the groovy API doc: docs.groovy-lang.org/latest/html/api/groovy/time/…
    – RMorrisey
    Commented Apr 2, 2015 at 22:03
  • Gives out an exception like this: groovy.lang.MissingPropertyException: No such property: hours for class: java.lang.Integer [See nested exception: groovy.lang.MissingPropertyException: No such property: hours for class: java.lang.Integer] Commented Aug 11, 2022 at 10:12
4

If your goal is very simple, you can just manipulate the underlying millisecond value.

final Long HOUR = 60 * 60 * 1000 // milliseconds in an hour
​Date now = new Date()
Date oneHourAgo = new Date(now.toInstant().toEpochMilli()​ - HOUR)
1

Just use the java.time package.

import java.time.LocalDateTime

Date now = new Date()
Date thirtyMinsFromNow = LocalDateTime.now().plusMinutes(30).toDate()

println "Date Now: $now"
println "Adding 30min to Now: $thirtyMinsFromNow"

Not the answer you're looking for? Browse other questions tagged or ask your own question.