AlexCon
AlexCon

Reputation: 1217

Incrementing date object by hours/minutes in Groovy

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.

Upvotes: 38

Views: 52934

Answers (3)

SGT Grumpy Pants
SGT Grumpy Pants

Reputation: 4436

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"

Upvotes: 1

Aaron Scherbing
Aaron Scherbing

Reputation: 747

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)

Upvotes: 4

Rami Enbashi
Rami Enbashi

Reputation: 3556

You can use TimeCategory

import groovy.time.TimeCategory

currentDate =  new Date()

println currentDate

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

println after30Mins

Upvotes: 74

Related Questions