# Yahoo! UI Library

### Calendar 2.5.0

Yahoo! UI Library > calendar > YAHOO.widget.DateMath

Show Private Show Protected

## Class YAHOO.widget.DateMath

YAHOO.widget.DateMath is used for simple date manipulation. The class is a static utility used for adding, subtracting, and comparing dates.

### Properties

#### DAY `- static final String`

Constant field representing Day

#### MONTH `- static final String`

Constant field representing Month

#### ONE_DAY_MS `- static final Number`

Constant field representing one day, in milliseconds

#### WEEK `- static final String`

Constant field representing Week

#### YEAR `- static final String`

Constant field representing Year

### Methods

#### _addDays

`private void _addDays ( d , nDays )`
Private helper method to account for bug in Safari 2 (webkit < 420) when Date.setDate(n) is called with n less than -128 or greater than 127.

Fix approach and original findings are available here: http://brianary.blogspot.com/2006/03/safari-date-bug.html

Parameters:
  `d <Date>` JavaScript date object
  `nDays <Number>` The number of days to add to the date object (can be negative)

Returns: `void`

#### add

`Date add ( date , field , amount )`
Adds the specified amount of time to the this instance.

Parameters:
  `date <Date>` The JavaScript Date object to perform addition on
  `field <String>` The field constant to be used for performing addition.
  `amount <Number>` The number of units (measured in the field constant) to add to the date.

Returns: `Date`
  The resulting Date object

#### after

`Boolean after ( date , compareTo )`
Determines whether a given date is after another date on the calendar.

Parameters:
  `date <Date>` The Date object to compare with the compare argument
  `compareTo <Date>` The Date object to use for the comparison

Returns: `Boolean`
  true if the date occurs after the compared date; false if not.

#### before

`Boolean before ( date , compareTo )`
Determines whether a given date is before another date on the calendar.

Parameters:
  `date <Date>` The Date object to compare with the compare argument
  `compareTo <Date>` The Date object to use for the comparison

Returns: `Boolean`
  true if the date occurs before the compared date; false if not.

#### between

`Boolean between ( date , dateBegin , dateEnd )`
Determines whether a given date is between two other dates on the calendar.

Parameters:
  `date <Date>` The date to check for
  `dateBegin <Date>` The start of the range
  `dateEnd <Date>` The end of the range

Returns: `Boolean`
  true if the date occurs between the compared dates; false if not.

#### clearTime

`Date clearTime ( date )`
Clears the time fields from a given date, effectively setting the time to 12 noon.

Parameters:
  `date <Date>` The JavaScript Date for which the time fields will be cleared

Returns: `Date`
  The JavaScript Date cleared of all time fields

#### findMonthEnd

`Date findMonthEnd ( date )`
Gets the last day of a month containing a given date.

Parameters:
  `date <Date>` The JavaScript Date used to calculate the month end

Returns: `Date`
  The JavaScript Date representing the last day of the month

#### findMonthStart

`Date findMonthStart ( date )`
Gets the first day of a month containing a given date.

Parameters:
  `date <Date>` The JavaScript Date used to calculate the month start

Returns: `Date`
  The JavaScript Date representing the first day of the month

#### getDate

`Date getDate ( y , m , d )`
Returns a new JavaScript Date object, representing the given year, month and date. Time fields (hr, min, sec, ms) on the new Date object are set to 0. The method allows Date instances to be created with the a year less than 100. "new Date(year, month, date)" implementations set the year to 19xx if a year (xx) which is less than 100 is provided.

NOTE:Validation on argument values is not performed. It is the caller's responsibility to ensure arguments are valid as per the ECMAScript-262 Date object specification for the new Date(year, month[, date]) constructor.

Parameters:
  `y <Number>` Year.
  `m <Number>` Month index from 0 (Jan) to 11 (Dec).
  `d <Number>` (optional) Date from 1 to 31. If not provided, defaults to 1.

Returns: `Date`
  The JavaScript date object with year, month, date set as provided.

#### getDayOffset

`Number getDayOffset ( date , calendarYear )`
Calculates the number of days the specified date is from January 1 of the specified calendar year. Passing January 1 to this function would return an offset value of zero.

Parameters:
  `date <Date>` The JavaScript date for which to find the offset
  `calendarYear <Number>` The calendar year to use for determining the offset

Returns: `Number`
  The number of days since January 1 of the given year

#### getJan1

`Date getJan1 ( calendarYear )`
Retrieves a JavaScript Date object representing January 1 of any given year.

Parameters:
  `calendarYear <Number>` The calendar year for which to retrieve January 1

Returns: `Date`
  January 1 of the calendar year specified.

#### getWeekNumber

`Number getWeekNumber ( date , calendarYear )`
Calculates the week number for the given date. This function assumes that week 1 is the week in which January 1 appears, regardless of whether the week consists of a full 7 days. The calendar year can be specified to help find what a the week number would be for a given date if the date overlaps years. For instance, a week may be considered week 1 of 2005, or week 53 of 2004. Specifying the optional calendarYear allows one to make this distinction easily.

Parameters:
  `date <Date>` The JavaScript date for which to find the week number
  `calendarYear <Number>` OPTIONAL - The calendar year to use for determining the week number. Default is the calendar year of parameter "date".

Returns: `Number`
  The week number of the given date.

#### isMonthOverlapWeek

`Boolean isMonthOverlapWeek ( weekBeginDate )`
Determines if a given week overlaps two different months.

Parameters:
  `weekBeginDate <Date>` The JavaScript Date representing the first day of the week.

Returns: `Boolean`
  true if the date overlaps two different months.

#### isYearOverlapWeek

`Boolean isYearOverlapWeek ( weekBeginDate )`
Determines if a given week overlaps two different years.

Parameters:
  `weekBeginDate <Date>` The JavaScript Date representing the first day of the week.

Returns: `Boolean`
  true if the date overlaps two different years.

#### subtract

`Date subtract ( date , field , amount )`
Subtracts the specified amount of time from the this instance.

Parameters:
  `date <Date>` The JavaScript Date object to perform subtraction on
  `field <Number>` The this field constant to be used for performing subtraction.
  `amount <Number>` The number of units (measured in the field constant) to subtract from the date.

Returns: `Date`
  The resulting Date object

Copyright © 2007 Yahoo! Inc. All rights reserved.