class

Date

@Serializable { simple=true }
const class Date : Obj

Date represents a day in time independent of a timezone.

constructors fromStr

Parse the string into a Date from the programmatic encoding defined by toStr

make

Make for the specified date values

fields defVal

Default value is "2000-01-01"

methods minus

Subtract the specified number of days to this date to get a date in the past

compare

Compare based on year, month, and day

firstOfMonth

Get the first day of this Date's current month

weekOfYear

Return the week number of the year as a number between 1 and 53 using the given weekday as the start of the week (defaults to current locale)

dayOfYear

Return the day of the year as a number between 1 and 365 (or 1 to 366 if a leap year)

fromLocale

Parse a string into a Date using the given pattern

year

Get the year as a number such as 2009

isToday

Return is this date equal to today

weekday

Get the day of the week for this date

firstOfYear

Get the Jan 1st of this Date's current year

yesterday

Get yesterday's Date using specified timezone

lastOfMonth

Get the last day of this Date's current month

lastOfYear

Get the Dec 31st of this Date's current year

today

Get today's Date using specified timezone

firstOfQuarter

Get the beginning of this date's three month quarter

Example

isSameYear

Return if this date is in the same year of that

toIso

Format this instance according to ISO 8601 using the pattern

day

Get the day of the month as a number between 1 and 31

toDateTime

Combine this Date with the given Time to return a DateTime

toStr

Return programmatic ISO 8601 string encoding formatted as follows

midnight

Return a DateTime for the beginning of this day at midnight

toLocale

Format this date according to the specified pattern

lastOfQuarter

Get the end of this date's three month quarter

Example

toCode

Get this Date as a Fantom expression suitable for code generation

tomorrow

Get tomorrow's Date using specified timezone

fromIso

Parse an ISO 8601 date

isTomorrow

Return is this date equal to today + 1day

isBefore

Convenience for this < that

plus

Add the specified number of days to this date to get a date in the future

isSameMonth

Return if this date is in the same year and month of that

month

Get the month of this date

minusDate

Return the delta between this and the given date

equals

Two dates are equal if they have the same year, month, and day

isYesterday

Return is this date equal to today - 1day

isAfter

Convenience for this > that

hash

Return hash of year, month, and day

quarter

Integer between 1 and 4 for which of the three month quarters this date falls in

compare virtual Int compare(Obj obj)

Compare based on year, month, and day.

day Int day()

Get the day of the month as a number between 1 and 31.

dayOfYear Int dayOfYear()

Return the day of the year as a number between 1 and 365 (or 1 to 366 if a leap year).

defVal const static Date : defVal

Default value is "2000-01-01".

equals virtual Bool equals(Obj? that)

Two dates are equal if they have the same year, month, and day.

firstOfMonth Date firstOfMonth()

Get the first day of this Date's current month.

Example:

Date("2009-10-28").firstOfMonth  =>  2009-10-01

firstOfQuarter Date firstOfQuarter()

Get the beginning of this date's three month quarter

Example:

Date("2025-04-28").firstOfQuarter  =>  2025-04-01

firstOfYear Date firstOfYear()

Get the Jan 1st of this Date's current year.

Example:

Date("2025-10-28").firstOfYear  =>  2025-01-01

fromIso static Date? fromIso(Str s, Bool checked)

Parse an ISO 8601 date. If invalid format and checked is false return null, otherwise throw ParseErr. The following format is supported:

YYYY-MM-DD

Also see toIso and fromStr.

fromLocale static Date? fromLocale(Str str, Str pattern, Bool checked)

Parse a string into a Date using the given pattern. If string is not a valid format then return null or raise ParseErr based on checked flag. See toLocale for pattern syntax.

fromStr static new fromStr(Str s, Bool checked)

Parse the string into a Date from the programmatic encoding defined by toStr. If the string cannot be parsed into a valid Date and checked is false then return null, otherwise throw ParseErr.

hash virtual Int hash()

Return hash of year, month, and day.

isAfter Bool isAfter(Date that)

Convenience for this > that

isBefore Bool isBefore(Date that)

Convenience for this < that

isSameMonth Bool isSameMonth(Date that)

Return if this date is in the same year and month of that

isSameYear Bool isSameYear(Date that)

Return if this date is in the same year of that

isToday Bool isToday()

Return is this date equal to today.

isTomorrow Bool isTomorrow()

Return is this date equal to today + 1day.

isYesterday Bool isYesterday()

Return is this date equal to today - 1day.

lastOfMonth Date lastOfMonth()

Get the last day of this Date's current month.

Example:

Date("2009-10-28").lastOfMonth  =>  2009-10-31

lastOfQuarter Date lastOfQuarter()

Get the end of this date's three month quarter

Example:

Date("2025-04-28").lastOfQuarter  =>  2025-06-30

lastOfYear Date lastOfYear()

Get the Dec 31st of this Date's current year.

Example:

Date("2025-10-28").lastOfYear  =>  2025-12-31

make static new make(Int year, Month month, Int day)

Make for the specified date values:

  • year: no restriction (although only 1901-2099 maps to DateTime)
  • month: Month enumeration
  • day: 1-31

Throw ArgErr if any of the parameters are out of range.

midnight DateTime midnight(TimeZone tz)

Return a DateTime for the beginning of this day at midnight.

minus @Operator
Date minus(Duration days)

Subtract the specified number of days to this date to get a date in the past. Throw ArgErr if days parameter is not a whole number of days (must be evenly divisible by 24hr).

Example:

Date(2008, Month.feb, 28) - 2day  =>  2008-02-26

minusDate @Operator
Duration minusDate(Date days)

Return the delta between this and the given date. The result is always an exact multiple of 24 hour days.

Example:

Date(2009, Month.jan, 5) - Date(2009, Month.jan, 2)  =>  3day

month Month month()

Get the month of this date.

plus @Operator
Date plus(Duration days)

Add the specified number of days to this date to get a date in the future. Throw ArgErr if days parameter is not a whole number of days (must be evenly divisible by 24hr).

Example:

Date(2008, Month.feb, 28) + 2day  =>  2008-03-01

quarter Int quarter()

Integer between 1 and 4 for which of the three month quarters this date falls in.

toCode Str toCode()

Get this Date as a Fantom expression suitable for code generation.

toDateTime DateTime toDateTime(Time t, TimeZone tz)

Combine this Date with the given Time to return a DateTime.

toIso Str toIso()

Format this instance according to ISO 8601 using the pattern:

YYYY-MM-DD

Also see fromIso and toStr.

toLocale Str toLocale(Str? pattern, Locale locale)

Format this date according to the specified pattern. If pattern is null, then a localized default is used. The pattern format is the same as DateTime.toLocale:

YY     Two digit year             07
YYYY   Four digit year            2007
M      One/two digit month        6, 11
MM     Two digit month            06, 11
MMM    Three letter abbr month    Jun, Nov
MMMM   Full month                 June, November
D      One/two digit day          5, 28
DD     Two digit day              05, 28
DDD    Day with suffix            1st, 2nd, 3rd, 24th
WWW    Three letter abbr weekday  Tue
WWWW   Full weekday               Tuesday
Q      Quarter number             3
QQQ    Quarter with suffix        3rd
QQQQ   Quarter spelled out        3rd Quarter
'xyz'  Literal characters

toStr virtual Str toStr()

Return programmatic ISO 8601 string encoding formatted as follows:

YYYY-MM-DD
2009-01-10

Also fromStr, toIso, and toLocale.

today static Date today(TimeZone tz)

Get today's Date using specified timezone.

tomorrow static Date tomorrow(TimeZone tz)

Get tomorrow's Date using specified timezone.

weekOfYear Int weekOfYear(Weekday startOfWeek)

Return the week number of the year as a number between 1 and 53 using the given weekday as the start of the week (defaults to current locale).

weekday Weekday weekday()

Get the day of the week for this date.

year Int year()

Get the year as a number such as 2009.

yesterday static Date yesterday(TimeZone tz)

Get yesterday's Date using specified timezone.

Haxall 4.0.5 ∙ 24-Feb-2026 14:33 EST