Ignore:
Timestamp:
Dec 2, 2009, 5:26:54 AM (10 years ago)
Author:
gav
Message:

Make date calculations and formatting more groovy.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/DateUtilService.groovy

    r180 r210  
     1import org.codehaus.groovy.runtime.TimeCategory
     2// the above will be deprecated and replaced by: groovy.time.TimeCategory
     3/// @todo: consider moving this to org.gnumims.DateUtil
     4/// pros: easy to use in domain classes.
     5/// cons: have to import so pulls in all referenced imports? Injection probably does that anyway.
     6
     7/**
     8* Provides some convenience methods for working with dates.
     9*/
    110class DateUtilService {
    211
     
    413    //static scope = "request"
    514
     15    /**
     16    * Get the start of today.
     17     * Can be call as dateUtilService.today or dateUtilService.getToday().
     18     * @returns A Date object with today's date and all time fields set to 0.
     19    */
    620    public static Date getToday() {
    7         return setMidnight(new Date())
     21        return getMidnight(new Date())
    822    }
    923
     24    /**
     25    * Get the start of tomorrow.
     26     * Can be call as dateUtilService.tomorrow or dateUtilService.getTomorrow().
     27     * @returns A Date object with tomorrow's date and all time fields set to 0.
     28    */
    1029    public static Date getTomorrow() {
    1130        return (getToday() + 1) as Date
    1231    }
    1332
    14     public static Date setMidnight(Date theDate) {
    15         Calendar cal = Calendar.getInstance()
    16         cal.setTime(theDate)
     33    /**
     34    * Get the start of yesterday.
     35     * Can be call as dateUtilService.yesterday or dateUtilService.getYesterday().
     36     * @returns A Date object with yesterday's date and all time fields set to 0.
     37    */
     38    public static Date getYesterday() {
     39        return (getToday() - 1) as Date
     40    }
     41
     42    /**
     43    * Get the start of the day one week ago.
     44     * Can be call as dateUtilService.oneWeekAgo or dateUtilService.getOneWeekAgo().
     45     * @returns A Date object with the date one week ago and all time fields set to 0.
     46    */
     47    public static Date getOneWeekAgo() {
     48        return (getToday() - 7) as Date
     49    }
     50
     51    /**
     52    * Get the start of the day one week ago.
     53     * Can be call as dateUtilService.oneWeekAgo or dateUtilService.getOneWeekAgo().
     54     * @returns A Date object with the date one week ago and all time fields set to 0.
     55    */
     56    public static Date getOneWeekFromNow() {
     57        return (getToday() + 7) as Date
     58    }
     59
     60    /**
     61    * Get the start of a given date by setting all time fields to 0.
     62    * The Calendar.getInstance() or Calendar.instance factory returns a new calendar instance, usually
     63    * a Gregorian calendar but using Calendar we don't have to worry about those details.
     64    * The time fields are then set to zero and cal.getTime() or cal.time returns a java.util.Date object.
     65    * @param date The Date object to start with.
     66    * @returns A Date object having the given date and all time fields set to 0, so the very start of the given day.
     67    */
     68    public static Date getMidnight(Date date) {
     69        Calendar cal = Calendar.instance
     70        cal.setTime(date)
    1771        cal.set(Calendar.HOUR_OF_DAY, 0)
    1872        cal.set(Calendar.MINUTE, 0)
    1973        cal.set(Calendar.SECOND, 0)
    2074        cal.set(Calendar.MILLISECOND, 0)
    21         cal.getTime()
     75        cal.time
    2276    }
    2377
Note: See TracChangeset for help on using the changeset viewer.