net.fortuna.ical4j.util

## Class Dates

- java.lang.Object
- - net.fortuna.ical4j.util.Dates

    public final class Dates
    extends Object

$Id$ Created on 26/06/2005 Implements a collection of utility methods relevant to date processing.

Author:
  Ben Fortuna

### Field Summary

Fields
`static int` `DAYS_PER_WEEK` Number of days in one week.
`static int` `MAX_DAYS_PER_MONTH` Maximum number of days per month.
`static int` `MAX_DAYS_PER_YEAR` Maximum number of days per year.
`static int` `MAX_WEEKS_PER_YEAR` Maximum number of weeks per year.
`static long` `MILLIS_PER_DAY` Number of milliseconds in one day.
`static long` `MILLIS_PER_HOUR` Number of milliseconds in one hour.
`static long` `MILLIS_PER_MINUTE` Number of milliseconds in one minute.
`static long` `MILLIS_PER_SECOND` Number of milliseconds in one second.
`static long` `MILLIS_PER_WEEK` Number of milliseconds in one week.
`static int` `PRECISION_DAY` Constant indicating precision to the day.
`static int` `PRECISION_SECOND` Constant indicating precision to the second.

### Method Summary

Methods
`static int` `getAbsMonthDay(Date date, int monthDay)` Returns the absolute month day for the month specified by the supplied date.
`static int` `getAbsWeekNo(Date date, int weekNo)` Returns the absolute week number for the year specified by the supplied date.
`static int` `getAbsYearDay(Date date, int yearDay)` Returns the absolute year day for the year specified by the supplied date.
`static Calendar` `getCalendarInstance(Date date)` Returns an instance of `java.util.Calendar` that is suitably initialised for working with the specified date.
`static long` `getCurrentTimeRounded()` Returns the `System.currentTimeMillis()`, rounded to the second.
`static Date` `getInstance(Date date, Value type)` Returns a new date instance of the specified type.
`static long` `round(long time, int precision)` Deprecated. It is not all that useful to perform rounding without specifying an explicit timezone.
`static long` `round(long time, int precision, TimeZone tz)` Rounds a time value to remove any precision smaller than specified.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### MILLIS_PER_SECOND

    public static final long MILLIS_PER_SECOND

Number of milliseconds in one second.

See Also:
  Constant Field Values

#### MILLIS_PER_MINUTE

    public static final long MILLIS_PER_MINUTE

Number of milliseconds in one minute.

See Also:
  Constant Field Values

#### MILLIS_PER_HOUR

    public static final long MILLIS_PER_HOUR

Number of milliseconds in one hour.

See Also:
  Constant Field Values

#### MILLIS_PER_DAY

    public static final long MILLIS_PER_DAY

Number of milliseconds in one day.

See Also:
  Constant Field Values

#### MILLIS_PER_WEEK

    public static final long MILLIS_PER_WEEK

Number of milliseconds in one week.

See Also:
  Constant Field Values

#### DAYS_PER_WEEK

    public static final int DAYS_PER_WEEK

Number of days in one week.

See Also:
  Constant Field Values

#### PRECISION_SECOND

    public static final int PRECISION_SECOND

Constant indicating precision to the second.

See Also:
  Constant Field Values

#### PRECISION_DAY

    public static final int PRECISION_DAY

Constant indicating precision to the day.

See Also:
  Constant Field Values

#### MAX_WEEKS_PER_YEAR

    public static final int MAX_WEEKS_PER_YEAR

Maximum number of weeks per year.

See Also:
  Constant Field Values

#### MAX_DAYS_PER_YEAR

    public static final int MAX_DAYS_PER_YEAR

Maximum number of days per year.

See Also:
  Constant Field Values

#### MAX_DAYS_PER_MONTH

    public static final int MAX_DAYS_PER_MONTH

Maximum number of days per month.

See Also:
  Constant Field Values

### Method Detail

#### getAbsWeekNo

    public static int getAbsWeekNo(Date date,
                   int weekNo)

Returns the absolute week number for the year specified by the supplied date. Note that a value of zero (0) is invalid for the weekNo parameter and an `IllegalArgumentException` will be thrown.

Parameters:
  `date` - a date instance representing a week of the year
  `weekNo` - a week number offset
Returns:
  the absolute week of the year for the specified offset

#### getAbsYearDay

    public static int getAbsYearDay(Date date,
                    int yearDay)

Returns the absolute year day for the year specified by the supplied date. Note that a value of zero (0) is invalid for the yearDay parameter and an `IllegalArgumentException` will be thrown.

Parameters:
  `date` - a date instance representing a day of the year
  `yearDay` - a day of year offset
Returns:
  the absolute day of month for the specified offset

#### getAbsMonthDay

    public static int getAbsMonthDay(Date date,
                     int monthDay)

Returns the absolute month day for the month specified by the supplied date. Note that a value of zero (0) is invalid for the monthDay parameter and an `IllegalArgumentException` will be thrown.

Parameters:
  `date` - a date instance representing a day of the month
  `monthDay` - a day of month offset
Returns:
  the absolute day of month for the specified offset

#### getInstance

    public static Date getInstance(Date date,
                   Value type)

Returns a new date instance of the specified type. If no type is specified a DateTime instance is returned.

Parameters:
  `date` - a seed Java date instance
  `type` - the type of date instance
Returns:
  an instance of `net.fortuna.ical4j.model.Date`

#### getCalendarInstance

    public static Calendar getCalendarInstance(Date date)

Returns an instance of `java.util.Calendar` that is suitably initialised for working with the specified date.

Parameters:
  `date` - a date instance
Returns:
  a `java.util.Calendar`

#### round

    public static long round(long time,
             int precision)

Deprecated. It is not all that useful to perform rounding without specifying an explicit timezone.

Parameters:
  `time` - the time value to round
  `precision` - the rounding precision
Returns:
  a round time value

#### round

    public static long round(long time,
             int precision,
             TimeZone tz)

Rounds a time value to remove any precision smaller than specified.

Parameters:
  `time` - the time value to round
  `precision` - the rounding precision
  `tz` - the timezone of the rounded value
Returns:
  a round time value

#### getCurrentTimeRounded

    public static long getCurrentTimeRounded()

Returns the `System.currentTimeMillis()`, rounded to the second.

By doing a rough rounding here, we avoid an expensive java.util.Calendar based rounding later on.

Returns:
  the current time in millisec.