|
Class: Date
Object
|
+--Magnitude
|
+--AbstractChronologyObject
|
+--Date
- Package:
- stx:libbasic
- Category:
- Kernel-Chronology
- Version:
- rev:
1.231
date: 2024/03/19 16:50:22
- user: stefan
- file: Date.st directory: libbasic
- module: stx stc-classLibrary: libbasic
Instances of Date represent dates as year, month and day encoded in the
(private & hidden) instance dateEncoding. The value found there is
year*100*100 + month*100 + day
This makes magnitude-like comparison of dates easy, and the main components
d,m,y are easily reconstructed (assuming, that this is the stuff most used).
Do not depend on the internal representation -
it is private and not guaranteed for future versions.
The old representation used days since 1st Jan. 1901 internally -
with the new implementation, it is possible to reasonably represent almost
any Date.
(which insurance companies will like,
since they can now represent even very old people's birthday :-)
Notice:
no correction for pre-Gregorian dates (< 1583) is done.
For dates before 1582 (when calendars were changed from Julian to Gregorian),
the so called 'proleptic gregorian calendar' is used.
This assumes leap years to continue in the past as if a gregorian calendar was used.
Thus, 0000 is considered a leap year.
The printed representation of dates is controlled by resource definitions -
thus national variants are already supported (see file 'resources/Date.rs').
Compatibility notice:
due to historic reasons, there are some methods found twice
with different names in this class. The old ST/X methods will vanish
over time, but kept for a while to support existing applications
(the info on how these methods should be named
came somewhat late from the testers...).
Please do not use methods marked as obsolete.
Most useful methods:
Date today
(Date today) addDays:
(Date today) subtractDays:
copyrightCOPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
Compatibility-Dolphin
-
newDay: day monthIndex: month year: year
-
Dolphin compatibility - same as newDay:month:year
Usage example(s):
Date newDay:8 monthIndex:5 year:1993
|
Compatibility-ST80
-
newDay: day monthNumber: monthIndex year: year
-
ST80/VW compatibility
Compatibility-Squeak
-
current
-
return the current date
Usage example(s):
-
fromSeconds: seconds
-
Answer an instance of me which is 'seconds' seconds after January 1, 1901.
Usage example(s):
Date fromSeconds:0
Date fromSeconds:(24 * 60 * 60 * 365)
|
-
readMMDDYYYYFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:
Usage example(s):
Date readMMDDYYYYFrom:'10041999' onError:['wrong date']
Date readMMDDYYYYFrom:'100419' onError:['wrong date']
Date readMMDDYYYYFrom:'10040001' onError:['wrong date']
Date readMMDDYYYYFrom:'10-04-2001' onError:['wrong date']
|
-
readYYMMDDFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:
Usage example(s):
Date readYYMMDDFrom:'991004' onError:['wrong date']
Date readYYMMDDFrom:'211004' onError:['wrong date']
Date readYYMMDDFrom:'21-10-04' onError:['wrong date']
|
-
readYYMMFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:
Usage example(s):
Date readYYMMFrom:'9910' onError:['wrong date']
Date readYYMMFrom:'2010' onError:['wrong date']
Date readYYMMFrom:'20-10' onError:['wrong date']
|
-
readYYYYMMDDFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:
Usage example(s):
Date readYYYYMMDDFrom:'19991004' onError:['wrong date']
Date readYYYYMMDDFrom:'1999-10-04' onError:['wrong date']
Date readYYYYMMDDFrom:'911004' onError:['wrong date']
|
-
readYYYYMMFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:
Usage example(s):
Date readYYYYMMFrom:'199910' onError:['wrong date']
Date readYYYYMMFrom:'1999-10' onError:['wrong date']
Date readYYYYMMFrom:'9110' onError:['wrong date']
|
-
year: year day: dayInYear
-
return a new Date, given the year and the day-in-year (starting at 1).
See also: Date today / Time now / Timestamp now.
Squeak compatibility
Usage example(s):
self year:1970 day:1
self year:2000 day:1
|
Javascript support
-
js_new
( an extension from the stx:libjavascript package )
-
return the current timestamp
-
js_new: aStringOrNumber
( an extension from the stx:libjavascript package )
-
return a timestamp; from either the string representation or the millis since
the epoch.
This is a synthetic selector, generated by the JS compiler,
if a construct of the form new Date(arg) is parsed.
I.e.
new Date(x)
generates
Date js_new:x
-
js_new: year new: month
( an extension from the stx:libjavascript package )
-
return a timestamp.
this is a synthetic selector, generated by the JS compiler,
if a construct of the form new Date(dim1, dim2) is parsed.
I.e.
new Date(y,m)
generates
Date js_new:y new:m
-
js_new: year new: month new: day
( an extension from the stx:libjavascript package )
-
return a timestamp.
this is a synthetic selector, generated by the JS compiler,
if a construct of the form new Date(y,m,d) is parsed.
I.e.
new Date(y,m,d)
generates
Date js_new:y new:m new:d
-
js_new: year new: month new: day new: hour
( an extension from the stx:libjavascript package )
-
return a timestamp.
-
js_new: year new: month new: day new: hour new: minute
( an extension from the stx:libjavascript package )
-
return a timestamp.
-
js_new: year new: month new: day new: hour new: minute new: second
( an extension from the stx:libjavascript package )
-
return a timestamp.
-
js_new: year new: month new: day new: hour new: minute new: second new: millis
( an extension from the stx:libjavascript package )
-
return a timestamp.
error handling
-
conversionErrorSignal
-
return the signal used for conversion error handling
general queries
-
dayOfFirstWeekInYear: aYear
-
for a given year, return the day corresponding to that year's monday of week-01.
The 1st week is the one, in which the first thursday is found;
and the 1st day of that week is the preceeding monday
(that means: that the returned day might be a day of the previous year!)
Usage example(s):
Date newDay:1 year:1900
Date dayOfFirstWeekInYear:1900
Date dayOfFirstWeekInYear:1998
Date dayOfFirstWeekInYear:1999
Date dayOfFirstWeekInYear:2000
Date dayOfFirstWeekInYear:2001
|
-
dayOfWeek: dayName
-
given the name of a day (either string or symbol),
return the day-index (1 for monday; 7 for sunday).
Return 0 for invalid day name
Usage example(s):
Date dayOfWeek:'wednesday'
Date dayOfWeek:'Wednesday'
Date dayOfWeek:'Mittwoch'
|
-
dayOfWeek: dayName language: lang
-
given the name of a day (either string or symbol),
return the day-index (1 for monday; 7 for sunday).
Return 0 for invalid day name.
For nil, Smalltalk language is used,
for unknown languages, english is used.
Usage example(s):
Date dayNamesForLanguage:'fr'
Date dayNamesForLanguage:'de'
Date dayOfWeek:'wednesday' language:'en'
Date dayOfWeek:'Wednesday' language:'en'
Date dayOfWeek:'Montag' language:'de'
Date dayOfWeek:'montag' language:'de'
Date dayOfWeek:'lundi' language:'fr'
|
-
daysInMonth: month forYear: yearInteger
-
given the name of a month and a year, return the number
of days this month has (modified GNU).
return 0 if the month name was invalid.
For your convenience, month maybe an integer or name-string.
Usage example(s):
Date daysInMonth:2 forYear:1980
Date daysInMonth:2 forYear:1981
Date daysInMonth:'feb' forYear:1981
|
-
daysInYear: yearInteger
-
return the number of days in a year
Usage example(s):
Date daysInYear:1900
Date daysInYear:1901
Date daysInYear:1904
Date daysInYear:1980
Date daysInYear:1981
|
-
daysUntilMonth: month forYear: yearInteger
-
given the name of a month and a year, return the number
of days from 1st january to last of prev month of that year.
Return 0 if the month name/index is invalid or is january.
For your convenience, month maybe an integer or name-string.
Usage example(s):
Date daysUntilMonth:'feb' forYear:1993
Date daysUntilMonth:'jan' forYear:1993
|
-
defaultFormatString
-
a language specific format string to present dates in user interfaces.
Do not use this to store/retrieve dates (use ISO8601 for that)
Usage example(s):
Date today printStringFormat:(Date defaultFormatString).
Date today printStringFormat:(Date longFormatString).
Date today printStringFormat:(Date shortFormatString).
|
-
firstDayOfYear: inYear
-
return the weekDay-index of the 1st-january of the given year.
1->monday, 2->tuesday, ... 7->sunday
Usage example(s):
self firstDayOfYear:2000
(Date newDay:1 year:2000) dayInWeek
self firstDayOfYear:1999
(Date newDay:1 year:1999) dayInWeek
self firstDayOfYear:1998
(Date newDay:1 year:1998) dayInWeek
self firstDayOfYear:2001
(Date newDay:1 year:2001) dayInWeek
self firstDayOfYear:2002
(Date newDay:1 year:2002) dayInWeek
self firstDayOfYear:2006
(Date newDay:1 year:2006) dayInWeek
self firstDayOfYear:1800
(Date newDay:1 year:1800) dayInWeek
|
-
indexOfMonth: aMonthString
-
given the name of a month (either string or symbol),
return the month-index (1 for jan; 12 for december).
The given string may be a full or abbreviated name, case is ignored.
The given string may be in the current language or english.
Return 0 for invalid month name.
Usage example(s):
Date indexOfMonth:'jan'
Date indexOfMonth:'Jan'
Date indexOfMonth:'December'
Date indexOfMonth:'Dezember'
Date indexOfMonth:'december'
Date indexOfMonth:'dezember'
|
-
indexOfMonth: aMonthString language: languageOrNil
-
given the name of a month (either string or symbol),
return the month-index (1 for jan; 12 for december).
The given string may be a full or abbreviated name,
case is ignored.
Return 0 for invalid month name.
For nil, Smalltalk language (i.e. the current language setting) is used,
for unknown languages, english is used.
Usage example(s):
Date indexOfMonth:'jan' language:#en
Date indexOfMonth:'Jan' language:#en
Date indexOfMonth:'December' language:#en
Date indexOfMonth:'Dezember' language:#de
Date indexOfMonth:'dezember' language:#de
Date indexOfMonth:'dez' language:#de
|
-
leapYear: yearInteger
-
return true, if yearInteger is a leap year.
For years before 1583, the proleptic calendar is used
(i.e. assuming there was a gregorian calendar in effect)
Usage example(s):
Date leapYear:1992
Date leapYear:1994
Date leapYear:1900
Date leapYear:2000
Date leapYear:0
Date leapYear:-1
Date leapYear:-2
Date leapYear:-3
Date leapYear:-4
|
-
longFormatString
-
Date today printStringFormat:(Date defaultFormatString). => '02/12/2024' -- when us-english
Date today printStringFormat:(Date longFormatString). => 'monday, 02/12/2024'
Date today printStringFormat:(Date shortFormatString). => '02/12/2024'
-
monthAndDayFromDayInYear: aDayInYear forYear: yearInteger
-
given a day-in-year (1..365) return an Array containing the
month index and the day-in-month. Return nil if the argument is invalid.
Usage example(s):
Date monthAndDayFromDayInYear:66 forYear:1980
Date monthAndDayFromDayInYear:66 forYear:1981
|
-
numWeeksInYear: aYear
-
for a given year, return the number of calendar weeks within the year (52 or 53).
ISO 8601: years in which 1 January or 31 December are Thursdays do have 53 weeks
Usage example(s):
Date numWeeksInYear:1900
Date numWeeksInYear:1900
Date numWeeksInYear:1998
Date numWeeksInYear:1999
Date numWeeksInYear:2000
Date numWeeksInYear:2001
Date numWeeksInYear:2002
Date numWeeksInYear:2003
Date numWeeksInYear:2004
Date numWeeksInYear:2005
|
-
shortFormatString
-
Date today printStringFormat:(Date defaultFormatString).
Date today printStringFormat:(Date longFormatString).
Date today printStringFormat:(Date shortFormatString).
-
weekInYearOf: aDateOrTimestamp
-
for a given date or timeStamp, return the week-number.
The returned week number starts with 1 for the first week which has a thursday in it.
(see DIN 1355-1/ISO 8601)
The rule is:
every monday (and only monday), a new week begins
the first week is the one which has at least 4 days of the new year in it
Be prepared: this definition can lead to the 1st week starting in the old year!
-
yearAsDays: yearInteger
-
Returns the number of days since Jan 1, 1901. (GNU)
to the first Jan of the year, yearInteger.
For 1901 this is zero, for 1902 it's 365.
Defined for years >= 1901
Usage example(s):
Date yearAsDays:5
Date yearAsDays:1900
Date yearAsDays:1901
Date yearAsDays:1902
Date yearAsDays:1903
Date yearAsDays:1904
Date yearAsDays:1905
Date yearAsDays:1994
(Date yearAsDays:2001) - (Date yearAsDays:2000)
|
-
yearAsDaysFrom0: yearInteger
-
Returns the number of days since Jan 1, 0 to Jan 1, yearInteger
without caring for gregorian calendar change
(i.e. as if there was a gregorian for all time).
Also assuming that the leapYear rules were present in pre-gregorian times also.
Used internally to compute date differences.
In previous versions, dates were counted relative to 1.1.1901.
This is no longer done; however, for backward compatibility, the old yearAsDays
and Date fromDays is still supported.
For years >= 1901 it must hold that:
yearAsDaysFrom0(d1) - yearAsDaysFrom0(d2)
is the same as
yearAsDays(d1) - yearAsDays(d2)
Usage example(s):
Date yearAsDaysFrom0:1900
Date yearAsDaysFrom0:1901
Date yearAsDaysFrom0:1902
Date yearAsDaysFrom0:1903
Date yearAsDaysFrom0:1904
Date yearAsDaysFrom0:1905
Date yearAsDaysFrom0:1994
(Date yearAsDays:2001) - (Date yearAsDays:2000)
(Date yearAsDaysFrom0:2001) - (Date yearAsDaysFrom0:2000)
(Date yearAsDays:2002) - (Date yearAsDays:2001)
(Date yearAsDaysFrom0:2002) - (Date yearAsDaysFrom0:2001)
Date yearAsDaysFrom0:-4 -1461 -- -4 was a leap year
Date yearAsDaysFrom0:-3 -1095
Date yearAsDaysFrom0:-2 -730
Date yearAsDaysFrom0:-1 -365
Date yearAsDaysFrom0:0 0
Date yearAsDaysFrom0:1 366 -- 0 was a leap year
Date yearAsDaysFrom0:2 731
Date yearAsDaysFrom0:3 1096
Date yearAsDaysFrom0:4 1461
Date yearAsDaysFrom0:5 1827 -- 0 and 4 are leap years
|
initialization
-
initDefaultNames
-
read the language specific names.
Usage example(s):
-
initNamesForLanguage: language
-
read the language specific names.
Usage example(s):
Date initNamesForLanguage:#de.
Date initNamesForLanguage:#de_at.
Date initNamesForLanguage:#de_de.
Date initNamesForLanguage:#de_auto.
Date initNamesForLanguage:#en.
Date initNamesForLanguage:#en_en.
Date initNamesForLanguage:#en_au.
Date initNamesForLanguage:#fr.
Date initNamesForLanguage:#es.
|
instance creation
-
fromDays: dayCount
-
return a new Date, given the day-number starting with 0 at 1.Jan 1901;
(i.e. 'Date fromDays:0' returns 1st Jan. 1901).
Date asDays is the reverse operation.
Notice, that this is not able to represent dates before 1901!.
Added for GNU/ST-80 compatibility
Usage example(s):
Date fromDays:0 -> 1 jan 1901
Date fromDays:365 -> 1 jan 1902
Date fromDays:730 -> 1 jan 1903
Date fromDays:1095 -> 1 jan 1904
Date fromDays:1460 ->31 dec 1904 since 1904 was a leap year
Date fromDays:-1 -> 12/31/1900
Date fromDays:-2 -> 12/31/1900
Date fromDays:-365 -> 01/01/1900
|
-
fromDaysFrom0: dayCount
-
return a new Date, given the day-number starting with 0 at 1.Jan 0000;
(i.e. 'Date fromDaysSince0:0' returns 1st Jan. 0000).
Date asDaysSince0 is the reverse operation.
Notice, that this is a private interface.
Also notice: does not care for Gregorian/Julisn calendar change
Usage example(s):
Date fromDaysFrom0:0 -> 1 jan 0
Date fromDaysFrom0:366 -> 1 jan 1
|
-
newDay: dayInYear year: year
-
return a new Date, given the year and the day-in-year (starting at 1).
See also: Date today / Time now / Timestamp now.
ST-80 compatibility
Usage example(s):
Date newDay:150 year:1994
Date newDay:1 year:1994
Date newDay:1 year:1901
Date newDay:1 year:1902
Date newDay:365 year:1992
Date newDay:366 year:1992
Date newDay:365 year:1994
Date newDay:366 year:1994
Date newDay:0 year:1994
Date newDay:271 year:2008
Date newDay:270 year:2008
Date newDay:271 year:2007
|
-
newDayInWeek: dayInWeek week: week year: yearArg
-
return a new Date, given the year, the week (1..) and the day in week (1..7).
See http://en.wikipedia.org/wiki/ISO_week_date
Usage example(s):
Date newDayInWeek:6 week:39 year:2008
Date newDayInWeek:1 week:40 year:2014
Date newDayInWeek:1 week:44 year:2014
|
-
now
( an extension from the stx:libjavascript package )
-
return the current date
Usage example(s):
JavaScriptParser
evaluate:'Date.now();'
JavaScriptParser
evaluate:'Date.now().getDate();'
|
-
readFrom: aStringOrStream format: aSqueakFormatArrayOrFormatString
-
return a new Date, reading a printed representation from aStream.
aSqueakFormatArrayOrFormatString may either be a squeak formatArray
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or a formatString (see printing instance protocol).
-
readFrom: aStringOrStream format: aFormatStringOrSqueakFormatArray language: languageOrNil onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
aFormatStringOrSqueakFormatArray may either be a Squeak formatArray:
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or an ST/X formatString (see printing instance protocol).
For now %d, %m, %monthName, %shortMonthName, %y, %Y, %y1900, %y2000, %y1950 and %y1980 are supported in the formatString.
y1900 converts 2-digit year YY into 19YY,
y2000 into 20YY.
y1950, y1980, y1970 and Y are special;
if the year is below 50/80/70/70, it is converted to 20YY, otherwise to 19YY.
The formatString can have any of these characters '-.:,;/' as separator.
The format may be preceeded by a single numeric length (as in %2d) to specify how many
characters to read.
The formatString can also use a space as separator (for ex. '%d %m %y') and any separator will be allowed.
However, when a character separator is defined, only that separator will be expected.
TODO: make this a general feature of all DateAndTime classes.
Usage example(s):
Date readFrom:'31 December 1992' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'19:11:1999' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'December, 5 1992' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'3-jan-95' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'12/31/1992' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'15.4.1992' printFormat:#(1 2 3) onError:'wrong date' -> german
Date readFrom:'10.4.1992' printFormat:#(1 2 3) onError:'fail' -> german
Date readFrom:'10.4.1992' printFormat:#(1 2 3) onError:['wrong date']
Date readFrom:'32.4.1992' printFormat:#(1 2 3) onError:['wrong date']
Date readFrom:'fooBar' printFormat:#(1 2 3) onError:['wrong date']
Date readFrom:'10.4' printFormat:#(1 2 3) onError:['wrong date']
Date readFrom:'10041999' printFormat:#(1 2 3) onError:['wrong date']
Date readFrom:'31/12/92' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' printFormat:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' printFormat:'%d %m %y' onError:'fail'
Date readFrom:'12/01' printFormat:'%m %y' onError:'fail'
Date readFrom:'01' printFormat:'%y' onError:'fail'
Date readFrom:'30.01' printFormat:'%d %m' onError:'fail'
Date readFrom:'300180' printFormat:'%2d%2m%2y' onError:'fail'
Date readFrom:'300170' printFormat:'%2d%2m%2y' onError:'fail' - gives 2070 as year
Date readFrom:'300170' printFormat:'%2d%2m%2Y' onError:'fail' - gives 1970 as year
Date readFrom:'300169' printFormat:'%2d%2m%2y' onError:'fail' - gives 2069 as year
Date readFrom:'300169' printFormat:'%2d%2m%2Y' onError:'fail' - gives 2069 as year
Date readFrom:'300170' printFormat:'%2d%2m%2(y1950)' onError:'fail' - gives 1970 as year
Date readFrom:'300170' printFormat:'%2d%2m%2(y1980)' onError:'fail' - gives 2070 as year
Date readFrom:'300181' printFormat:'%2d%2m%2(y1980)' onError:'fail' - gives 1981 as year
Date readFrom:'2015103' printFormat:'%4y%3(dayOfYear)' onError:'fail'
Date readFrom:'2018-12-03' printFormat:'%y %m %d' language: #de onError:'fail'
Date readFrom:'3-3-1995' printFormat:'%d %m %y' language: #de onError:'fail'
Date readFrom:'3-März-1995' printFormat:'%d %monthName %y' language: #de onError:'fail'
Date readFrom:'3-mär-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3/mär/1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3/mär/1995' printFormat:'%d-%shortMonthName-%y' language: #de onError:'fail'
Date readFrom:'3-dez-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3-Dez-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3-Dezember-1995' printFormat:'%d %monthName %y' language: #de onError:'fail'
|
-
readFrom: aStringOrStream format: aSqueakFormatArrayOrFormatString onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
aSqueakFormatArrayOrFormatString may either be a Squeak formatArray:
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or an ST/X formatString (see printing instance protocol).
All of the %-formats as in the printString are supported here.
(i.e. %d, %m and %y, %shortMonthName and %monthName)
In addition, %Y, %y1900, %y2000, %y1950 and %y1980 are supported:
y1900 converts 2-digit year YY into 19YY, y2000 into 20YY.
y1950, y1980 and Y are special; if the year is below 50/80/70, it is converted to 20YY, otherwise to 19YY.
TODO: make this a general feature of all DateAndTime classes.
Usage example(s):
Date readFrom:'31 December 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'19:11:1999' format:#(1 2 3) onError:'fail'
Date readFrom:'December, 5 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'3-jan-95' format:#(1 2 3) onError:'fail'
Date readFrom:'12/31/1992' format:#(1 2 3) onError:'fail'
Date readFrom:'15.4.1992' format:#(1 2 3) onError:'wrong date' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:'fail' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'32.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'fooBar' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10.4' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10041999' format:#(1 2 3) onError:['wrong date']
Date readFrom:'31/12/92' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:'%d %m %y' onError:'fail'
Date readFrom:'12/01' format:'%m %y' onError:'fail'
Date readFrom:'01' format:'%y' onError:'fail'
Date readFrom:'30.01' format:'%d %m' onError:'fail'
Date readFrom:'311201' format:'%2d%2m%2y' onError:'fail'
|
-
readFrom: aStringOrStream onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
Notice, that this is not the storeString format and
is different from the format expected by readFrom:.
BUG:
For Smalltalk compatibility, this method handles american format
(i.e. month/day/year),
the common format with letter month in the middle (10 December 2007)
and ISO formats (yyyy-mm-dd) - as long as yyyy is > 12.
It also handles yyyymmdd and yymmdd.
It also handles short years (i.e. 2 digits), by evaluating the
UserPreferences current twoDigitDateHandler
By default, that one will convert late 90's days to 19xx, and all others to 20xx.
It does NOT handle the german/french and other dd-mm-yyyy formats.
use readFrom:printFormat:onError: for this.
Usage example(s):
Date readFromString:'31 December 1992'
Date readFrom:'19:11:1999' onError:'wrong date'.
Date readFrom:'2007-12-31' onError:'wrong date'.
Date readFromString:'December, 5 1992'
Date readFromString:'12/31/1992'
Date readFromString:'01/02/1992'
Date readFromString:'3-jan-95'
Date readFromString:'3-jan-01'
Date readFromString:'12/31/01'
Date readFromString:'15.4.1992' -> german; leads to an error
Date readFromString:'10.4.1992' -> german; leads to a wrong date
Date readFromString:'10.4.1992' onError:['wrong date']
Date readFromString:'32.4.1992' onError:['wrong date']
Date readFromString:'fooBar' onError:['wrong date']
Date readFromString:'10.4' onError:['wrong date']
Date readFromString:'10041999' onError:['wrong date']
Date readFromString:'20140111' onError:['wrong date']
Date readFrom:'20140111'
Date readFrom:'140111'
Date readFrom:'990111'
|
-
today
-
return a date, representing today.
See also: Time now / Timestamp now.
Usage example(s):
-
tomorrow
-
return a date, representing tomorrow.
See also: Time now / Timestamp now.
Usage example(s):
Date tomorrow
Date tomorrow dayInWeek
|
-
utcToday
-
return a date, representing today in UTC.
That is, the current date in London without any daylight saving adjustments.
See also: Time now / Timestamp now.
Usage example(s):
-
year: year month: monthOrMonthName day: day
-
return a new Date, given the day, month and year.
For your convenience, month may be either an integer
or the month's name as a string.
WARNING: semantics changed: 0..99 is no longer treated as 1900..1999,
but as 0..99 now.
Any such adjustments must be made by the caller of this method now
(see those, for example readFrom:onError:)
Usage example(s):
Date year:1993 month:'may' day:8
Date year:1993 month:5 day:8
Date year:2004 month:'feb' day:29
Date year:2003 month:'feb' day:29
Date year:5 month:'feb' day:28
Date year:95 month:'feb' day:28
|
-
yesterday
-
return a date, representing yesterday.
See also: Time now / Timestamp now.
Usage example(s):
Date yesterday
Date yesterday dayInWeek
|
obsolete
-
day: day month: month year: year
-
return a new Date, given the day, month and year.
Obsolete:
use newDay:month:year: for ST-80 compatibility
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
day: dayInYear year: year
-
return a new Date, given the year and the day-in-year (starting at 1).
Obsolete:
use newDay:year: for ST-80 compatibility
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
isLeapYear: yearInteger
-
Return true, if a year is a leap year.
Obsolete:
Please use the ST-80 compatible #leapYear for new programs,
since this method will vanish.
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
newDay: day month: monthOrMonthName year: year
-
backward compatibility
-
readFrom: aStringOrStream printFormat: aSqueakFormatArrayOrFormatString
-
OBSOLETE: kept for backward compatibility.
return a new Date, reading a printed representation from aStream.
aSqueakFormatArrayOrFormatString may either be a squeak formatArray
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or a formatString (see printing instance protocol).
-
readFrom: aStringOrStream printFormat: aFormatStringOrSqueakFormatArray language: languageOrNil onError: exceptionBlock
-
OBSOLETE: kept for backward compatibility
return a new Date, reading a printed representation from aStream.
aFormatStringOrSqueakFormatArray may either be a Squeak formatArray
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or an ST/X formatString (see printing instance protocol).
For now %d, %m, %monthName, %shortMonthName, %y, %y1900, %y2000, %y1950 and %y1980 are supported in the formatString.
y1900 converts 2-digit year YY into 19YY, y2000 into 20YY.
y1950 and y1980 are special; if the year is below 50/80, it is converted to 20YY, otherwise to 19YY.
The formatString can have any of these characters '-.:,;/' as separator.
The format may be preceeded by a single numeric length (as in %2d) to specify how many
characters to read.
The formatString can also use a space as separator (for ex. '%d %m %y') and any separator will be allowed.
However, when a character separator is defined, only that separator will be expected.
TODO: make this a general feature of all DateAndTime classes.
Usage example(s):
Date readFrom:'31 December 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'19:11:1999' format:#(1 2 3) onError:'fail'
Date readFrom:'December, 5 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'3-jan-95' format:#(1 2 3) onError:'fail'
Date readFrom:'12/31/1992' format:#(1 2 3) onError:'fail'
Date readFrom:'15.4.1992' format:#(1 2 3) onError:'wrong date' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:'fail' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'32.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'fooBar' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10.4' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10041999' format:#(1 2 3) onError:['wrong date']
Date readFrom:'31/12/92' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:'%d %m %y' onError:'fail'
Date readFrom:'12/01' format:'%m %y' onError:'fail'
Date readFrom:'01' format:'%y' onError:'fail'
Date readFrom:'30.01' format:'%d %m' onError:'fail'
Date readFrom:'300180' format:'%2d%2m%2y' onError:'fail'
Date readFrom:'300170' format:'%2d%2m%2y' onError:'fail' - gives 2070 as year
Date readFrom:'300170' format:'%2d%2m%2(y1950)' onError:'fail' - gives 1970 as year
Date readFrom:'300170' format:'%2d%2m%2(y1980)' onError:'fail' - gives 2070 as year
Date readFrom:'300181' format:'%2d%2m%2(y1980)' onError:'fail' - gives 1981 as year
Date readFrom:'3-3-1995' format:'%d %m %y' language: #de onError:'fail'
Date readFrom:'3-März-1995' format:'%d %monthName %y' language: #de onError:'fail'
Date readFrom:'3-mär-1995' format:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3/mär/1995' format:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3/mär/1995' format:'%d-%shortMonthName-%y' language: #de onError:'fail'
Date readFrom:'3-dez-1995' format:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3-Dez-1995' format:'%d %shortMonthName %y' language: #de onError:'fail'
Date readFrom:'3-Dezember-1995' format:'%d %monthName %y' language: #de onError:'fail'
|
-
readFrom: aStringOrStream printFormat: aSqueakFormatArrayOrFormatString onError: exceptionBlock
-
return a new Date, reading a printed representation from aStream.
aSqueakFormatArrayOrFormatString may either be a Squeak formatArray
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
or an ST/X formatString (see printing instance protocol).
All of the %-formats as in the printString are supported here.
(i.e. %d, %m and %y, %shortMonthName and %monthName)
In addition, %y1900, %y2000, %y1950 and %y1980 are supported:
y1900 converts 2-digit year YY into 19YY, y2000 into 20YY.
y1950 and y1980 are special; if the year is below 50/80, it is converted to 20YY, otherwise to 19YY.
TODO: make this a general feature of all DateAndTime classes.
Usage example(s):
Date readFrom:'31 December 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'19:11:1999' format:#(1 2 3) onError:'fail'
Date readFrom:'December, 5 1992' format:#(1 2 3) onError:'fail'
Date readFrom:'3-jan-95' format:#(1 2 3) onError:'fail'
Date readFrom:'12/31/1992' format:#(1 2 3) onError:'fail'
Date readFrom:'15.4.1992' format:#(1 2 3) onError:'wrong date' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:'fail' -> german
Date readFrom:'10.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'32.4.1992' format:#(1 2 3) onError:['wrong date']
Date readFrom:'fooBar' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10.4' format:#(1 2 3) onError:['wrong date']
Date readFrom:'10041999' format:#(1 2 3) onError:['wrong date']
Date readFrom:'31/12/92' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:#(1 2 3) onError:'fail'
Date readFrom:'31/12/01' format:'%d %m %y' onError:'fail'
Date readFrom:'12/01' format:'%m %y' onError:'fail'
Date readFrom:'01' format:'%y' onError:'fail'
Date readFrom:'30.01' format:'%d %m' onError:'fail'
Date readFrom:'311201' format:'%2d%2m%2y' onError:'fail'
|
private
-
dayAbbrevsForLanguage: languageOrNilForDefault
-
return a collection of short day-names for a given language or the
current language if nil is given.
The returned strings depend on the resource translation file to be present for the
given language (i.e. libbasic/resources(<lang>.rs).
If not, english names are returned
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
daysInMonthIndex: monthIndex forYear: yearInteger
-
return the number of days in month monthIndex of
year yearInteger (modified GNU).
Return 0 for invalid month index.
This is the internal version of daysInMonth:forYear:
Usage example(s):
Date daysInMonthIndex:2 forYear:1994
Date daysInMonthIndex:2 forYear:1980
Date daysInMonthIndex:2 forYear:1981
|
-
daysUntilMonthIndex: monthIndex forYear: yearInteger
-
return the number of days from 1st January up to month monthIndex of
year yearInteger (modified GNU).
Return 0 for invalid month index.
This is the internal version of dayInMonth:forYear:
Usage example(s):
Date daysUntilMonthIndex:3 forYear:1994
Date daysUntilMonthIndex:3 forYear:1980
Date daysUntilMonthIndex:3 forYear:1981
|
private-encoding/decoding
-
encodeYear: y month: m day: d
-
the internal encoding is strictly private,
and should not be used outside.
-
readDatePartFrom: str format: fmt language: languageOrNil
-
read a single component (such as %shortName) from str
private-instance creation
-
fromOSTime: osTime
-
return a date, representing the date given by the operatingSystem time.
This somewhat clumsy implementation hides the OS's date representation
(i.e. makes this class independent of what the OS starts its time values with).
Don't use this method, the osTime representation is totally unportable.
Usage example(s):
Date fromOSTime:0 -> on UNIX: this should return 1st Jan 1970
that's where Unix time starts
On other systems, it may be something different.
Date fromOSTime:(24*60*60*1000) -> on UNIX: the day after
|
Compatibility-ANSI
-
dayOfWeek
-
return the week-day of the receiver - 1 is sunday, 7 for saturday.
WARNING: different from dayInWeek (which returns 1 for monday, ... 7 for sunday).
Usage example(s):
Date today dayOfWeek
Date today dayInWeek
|
-
dayOfWeekAbbreviation
-
return the short week-day of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'mon', 'tue' ...
Usage example(s):
Date today dayOfWeekAbbreviation
|
-
dayOfWeekName
-
return the week-day of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'monday', 'tuesday' ...
Usage example(s):
Date today dayOfWeekName
Date today dayOfWeekAbbreviation
|
-
dayOfYear
-
return the day-nr within the year of the receiver - 1..365/366
Usage example(s):
Compatibility-ST80
-
firstDayInMonth
-
Return the first day in the month of the receiver
Usage example(s):
Date today
Date today firstDayInMonth
Date today firstDayInMonth subtractDays:1
(Date today subtractDays:30) firstDayInMonth
(Date today subtractDays:122) firstDayInMonth
(Date today subtractDays:154) firstDayInMonth
|
-
lastDayInMonth
-
Return the last day in the month in which the receiver is.
Usage example(s):
Date today
Date today lastDayInMonth
Date today lastDayInMonth addDays:1
|
-
next: dayName
-
Return the next date whose weekday name is dayName.
Caveat; dayName is expected to be in the current language
Usage example(s):
Date today
Date today next:#Friday
Date today next:#Sunday
Date today next:#Monday
Date today next:#Thursday
Date today next:#WednesDay
|
-
nextDayWithIndex: dayIndex
-
Return the next date whose weekday name is dayName.
dayIndex is Monday=1, ... , Sunday=7
Usage example(s):
Date today
Date today nextDayWithIndex:5 - next Friday
Date today nextDayWithIndex:7
Date today nextDayWithIndex:1
Date today nextDayWithIndex:4
Date today nextDayWithIndex:3
|
-
previous: dayName
-
Return the previous date whose weekday name is dayName.
Caveat; dayName is expected to be in the current language
Usage example(s):
Date today
Date today previous:#Montag
Date today previous:#Monday
Date today previous:#Friday
Date today previous:#Sunday
Date today previous:#Monday
Date today previous:#Thursday
Date today previous:#WednesDay
Date today previous:#TuesDay
|
-
previousDayWithIndex: dayIndex
-
Return the previous date whose weekday name is dayIndex.
dayIndex is Monday=1, ... , Sunday=7
Usage example(s):
Date today
Date today previousDayWithIndex:1
Date today previousDayWithIndex:5
Date today previousDayWithIndex:7
Date today previousDayWithIndex:4
Date today previousDayWithIndex:3
Date today previousDayWithIndex:2
|
-
printFormat: aFormatArray
-
Obsolete, backward ST-80 compatible formatted printing - see printStringFormat:
Return a string containing a printed representation of the receiver.
The formatArray argument consists of 6 or 7 integers which control
the resulting string. The entries are:
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
4 asciiValue of separator character or separator character
or collection of 2 separator characters
5 month format (1: numeric; 2: abbreviated name; 3: fullname
4: abbreviated uppercase 5: full uppercase)
6 year format (1 include century; 2 exclude century)
7 (optional) true/false.
if true, print numbers in 2-digit format
(i.e. with leading zeros);
Taken as false, if omited
Day and monthnames are in the currently active language.
This method supports more options than the ST-80 version; month formats
4 and 5, non-numeric separators and the optional 7th parameter are not
supported by ST-80. Be aware of this for compatibility reasons.
Notice that not all formats can be scanned (correctly) by #readFrom:
This is an ST-80 compatibility method - I would have choosen another
(less cryptic) formatString ...
Usage example(s):
Date today printFormat:#(1 2 3 '' 1 2)
Date today printFormat:#(1 2 3 $- 1 2)
Date today printFormat:#(1 2 3 $. 1 2 true)
Date today printFormat:#(2 1 3 32 3 1)
Date today printFormat:#(2 1 3 #(' ' ', ') 3 1)
Date today printFormat:#(1 2 3 $- 2 1)
Date today printFormat:#(1 2 3 $- 4 1)
|
-
printFormat: aFormatArray forLanguage: languageOrNil
-
Obsolete, backward ST-80 compatible formatted printing - see printStringFormat:
Return a string containing a printed representation of the receiver.
The formatArray argument consists of 6 or 7 integers which control
the resulting string. The entries are:
1 day position (1, 2 or 3)
2 month position (1..3)
3 year position (1..3)
4 asciiValue of separator character or separator character
or collection of 2 separator characters
5 month format (1: numeric; 2: abbreviated name; 3: fullname
4: abbreviated uppercase 5: full uppercase)
6 year format (1 include century; 2 exclude century)
7 (optional) true/false.
if true, print numbers in 2-digit format
(i.e. with leading zeros);
Taken as false, if omited
Day and monthnames are in the currently active language.
This method supports more options than the ST-80 version; month formats
4 and 5, non-numeric separators and the optional 7th parameter are not
supported by ST-80. Be aware of this for compatibility reasons.
Notice that not all formats can be scanned (correctly) by #readFrom:
This is an ST-80 compatibility method - I would have choosen another
(less cryptic) formatString ...
Usage example(s):
Date today printFormat:#(1 2 3 '' 1 2)
Date today printFormat:#(1 2 3 $- 1 2)
Date today printFormat:#(1 2 3 $. 1 2 true)
Date today printFormat:#(2 1 3 32 3 1)
Date today printFormat:#(2 1 3 #(' ' ', ') 3 1)
Date today printFormat:#(1 2 3 $- 2 1) forLanguage:#en
Date today printFormat:#(1 2 3 $- 4 1) forLanguage:#en
|
-
printFormat: aFormatArray forLanguage: languageOrNil on: aStream
-
Obsolete, backward ST-80 compatible formatted printing - see comment
in printFormat:.
Append a printed representation of the receiver to aStream.
The argument, aFormatString controls the format, as described
in the #printFormat: method.
Notice that not all formats can be scanned (correctly) by #readFrom:
Usage example(s):
european formats:
Date today printFormat:#(1 2 3 $- 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 3 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $. 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $. 1 2 true) on:Transcript. Transcript cr.
US formats:
Date today printFormat:#(2 1 3 32 3 1) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 32 2 2) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 $/ 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 #(' ' ', ') 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 4 1) on:Transcript. Transcript cr.
|
-
printFormat: aFormatArray on: aStream
-
Obsolete, backward ST-80 compatible formatted printing - see comment
in printFormat:.
Append a printed representation of the receiver to aStream.
The argument, aFormatString controls the format, as described
in the #printFormat: method.
Notice that not all formats can be scanned (correctly) by #readFrom:
Usage example(s):
european formats:
Date today printFormat:#(1 2 3 $- 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 3 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $. 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $. 1 2 true) on:Transcript. Transcript cr.
US formats:
Date today printFormat:#(2 1 3 32 3 1) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 32 2 2) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 $/ 1 2) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(2 1 3 #(' ' ', ') 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 2 1) on:Transcript. Transcript cr.
Date today printFormat:#(1 2 3 $- 4 1) on:Transcript. Transcript cr.
|
-
shortPrintString
-
dummy - for now
-
weekdayIndex
-
Return the day index; Monday=1, ... , Sunday=7
Usage example(s):
Date today dayName
Date today weekdayIndex
|
Compatibility-Squeak
-
mmddyyyy
-
return a printed representation of the receiver in the
form mmddyyyy.
The receiver can be reconstructed with:
Date readMMDDYYYYFrom:aStringOrStream onError:[...]
Usage example(s):
accessing
-
abbreviatedDayName
-
return the short week-day-name of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'mon', 'tue' ...
Usage example(s):
Date today abbreviatedDayName
(Date newDay:15 month:4 year:1959) abbreviatedDayName
|
-
abbreviatedDayNameForLanguage: lang
-
return the short week-day-name of the receiver as a string.
The returned string depends on the resource translation file to be present for the
given language (i.e. libbasic/resources(<lang>.rs).
If not, the english name is returned.
Expect things like 'mon', 'tue' ...
Usage example(s):
Date today abbreviatedDayNameForLanguage:#en
Date today abbreviatedDayNameForLanguage:#de
Date today abbreviatedDayNameForLanguage:#zulu
(Date newDay:15 month:4 year:1959) abbreviatedDayName
|
-
abbreviatedMonthName
-
return the short month name of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'jan', 'feb' ...
Usage example(s):
Date today abbreviatedMonthName
(Date newDay:15 month:4 year:1959) abbreviatedMonthName
|
-
abbreviatedMonthNameForLanguage: lang
-
return the short month-name of the receiver as a string in a given language.
The returned string depends on the resource translation file to be present for the
given language (i.e. libbasic/resources(<lang>.rs).
If not, the english name is returned.
Expect things like 'jan', 'feb' ...
Usage example(s):
Date today abbreviatedMonthNameForLanguage:#en
Date today abbreviatedMonthNameForLanguage:#de
Date today abbreviatedMonthNameForLanguage:#zulu
|
-
asDays
-
return the number of days elapsed since 01-Jan-1901
and the receiver's day; starts with 0 for 1-1-1901.
Date>>fromDays: is the reverse operation.
Notice,
that this represents dates before 1901 as negative values!
For GNU/ST-80 compatibility.
Usage example(s):
(Date newDay: 5 month: 8 year: 1962) asDays => should be 22496
(Date newDay: 1 month: 1 year: 1901) asDays => 0
(Date newDay: 31 month: 12 year: 1900) asDays => -1
(Date newDay: 1 month: 1 year: 1800) asDays => -36889
Date today asDays
Date fromDays:(Date today asDays)
Date fromDays:(Date today asDays + 7)
Date fromDays:-36889 => 01/01/1800
|
-
asDaysFrom0
-
return the number of days elapsed since 01-Jan-0000
and the receiver's day; starts with 0 for 01-Jan-0000.
Date>>fromDaysFrom0: is the reverse operation.
Notice,
that this represents dates before 0 as negative values!
Usage example(s):
(Date newDay: 1 month: 1 year: 0) asDaysFrom0 -> should be 0
(Date newDay: 1 month: 1 year: 1) asDaysFrom0 -> should be 366
Date fromDaysFrom0:(Date today asDaysFrom0 + 7)
(Date newDay: 1 month: 1 year: -1) asDaysFrom0 -> should be -365
Date fromDaysFrom0:-365 -> 01/01/-1
(Date newDay: 1 month: 1 year: -10) asDaysFrom0 -> should be -3652
Date fromDaysFrom0:-3652 -> 01/01/-10
|
-
asSeconds
-
return the (truncated) seconds between 1.jan.1901 and the same time in the receiver's
day. (i.e. midnight to midnight).
The returned number may be negative for dates before 1901.
This does not include any leapSeconds ... strictly speaking, this is incorrect.
ST-80 compatibility.
Usage example(s):
(Date newDay: 5 month: 8 year: 1962) asSeconds
(Date newDay: 1 month: 1 year: 1901) asSeconds
(Date newDay: 1 month: 1 year: 1700) asSeconds
(Date today addDays:7) asSeconds - Date today asSeconds
|
-
day
-
return the day (1..31) of the receiver
-
dayInWeek
-
return the week-day of the receiver - 1 for monday, 7 for sunday.
WARNING: different from (american) dayOfWeek (which returns 1 for sunday, ... 7 for saturday).
WARNING: does not care for pre-gregorian dates
(i.e. do not use this for dates before 1583)
Usage example(s):
Date today dayInWeek
Date tomorrow dayInWeek
Date yesterday dayInWeek
(Date today subtractDays:2) dayInWeek
Date today weekday
Date tomorrow weekday
Date yesterday weekday
(Date newDay:15 month:4 year:1959) dayInWeek
(Date newDay:1 month:1 year:1901) dayInWeek
(Date newDay:31 month:12 year:1900) dayInWeek
(Date newDay:31 month:12 year:1899) dayInWeek
Date today dayInWeek
Date today dayOfWeek
|
-
dayInYear
-
return the day-nr within the year of the receiver - 1 .. 365/366
Usage example(s):
Date today dayInYear
(Date newDay:1 year:1999) dayInYear
(Date newDay:1 year:2000) dayInYear
(Date newDay:2 year:2000) dayInYear
(Date newDay:59 year:2004) dayInYear
(Date newDay:60 year:2004) dayInYear
(Date newDay:61 year:2004) dayInYear
(Date newDay:366 year:2004) dayInYear
(Date newDay:59 year:2005) dayInYear
(Date newDay:60 year:2005) dayInYear
(Date newDay:365 year:2005) dayInYear
|
-
dayOfMonth
-
Answer the day of the month represented by me.
Same as day; for ST-80 compatibility.
Usage example(s):
-
daysInMonth
-
return the number of days in the month of the receiver
Usage example(s):
-
daysInYear
-
return the number of days in the year of the receiver
Usage example(s):
-
daysLeftInMonth
-
return the number of days left in the month of the receiver
Usage example(s):
Date today daysLeftInMonth
|
-
daysLeftInYear
-
return the number of days left in the year of the receiver.
Today is excluded from the count (i.e. in a non-leap-year,
the first january will return 364)
Usage example(s):
Date today daysLeftInYear
|
-
isLeapYear
-
return true, if the receiver's year is a leap year
Usage example(s):
Date today isLeapYear
(Date newDay:1 month:1 year:1992) isLeapYear
|
-
month
-
return the month (1..12) of the receiver
Usage example(s):
-
monthIndex
-
return the index of the month (e.g. Feb.=2).
Same as month; for ST-80 compatibility.
-
monthName
-
return the month of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'january', 'february' ...
Usage example(s):
Date today monthName
(Date newDay:15 month:4 year:1959) monthName
|
-
monthNameForLanguage: languageOrNil
-
return the month-name of the receiver as a string in a given language.
The returned string depends on the resource translation file to be present for the
given language (i.e. libbasic/resources(<lang>.rs).
If not, the english name is returned.
Expect things like 'january', 'february' ...
Usage example(s):
Date today monthName
Date today monthNameForLanguage:#en
Date today monthNameForLanguage:#de
Date today monthNameForLanguage:#zulu
|
-
weekInYear
-
return the week number of the receiver - 1 for Jan, 1st.
each week is Mon .. Sun (i.e. Sunday belongs to the previous week)
Usage example(s):
Date today weekInYear
(Date newDay:1 year:2000) weekInYear was a saturday
(Date newDay:2 year:2000) weekInYear was a sunday
(Date newDay:3 year:2000) weekInYear was a monday
(Date newDay:4 year:2000) weekInYear was a tuesday
(Date newDay:5 year:2000) weekInYear was a wed
(Date newDay:6 year:2000) weekInYear was a thursday
(Date newDay:7 year:2000) weekInYear was a fri
(Date newDay:8 year:2000) weekInYear was a sat
(Date newDay:9 year:2000) weekInYear was a sun
(Date newDay:10 year:2000) weekInYear was a monday
(Date newDay:3 month:1 year:2001) weekInYear
|
-
weekday
-
return the week-day of the receiver as a string.
The returned string depends on the current language setting.
Expect things like 'monday', 'tuesday' ...
For ST-80 compatibility
Usage example(s):
Date today weekday
(Date newDay:15 month:4 year:1959) weekday
|
-
weekdayForLanguage: lang
-
return the week-day-name of the receiver as a string in a given language.
The returned string depends on the resource translation file to be present for the
given language (i.e. libbasic/resources(<lang>.rs).
If not, the english name is returned.
Expect things like 'monday', 'tuesday'...
Usage example(s):
Date today weekdayForLanguage:#de -> Mittwoch
Date today weekdayForLanguage:#en -> wednesday
Date today weekdayForLanguage:#zulu -> wednesday
(Date newDay:15 month:4 year:1959) weekdayForLanguage:#de
(Date newDay:15 month:4 year:1959) weekdayForLanguage:#en
(Date newDay:15 month:4 year:1959) weekdayForLanguage:#zulu
|
-
year
-
return the year of the receiver
Usage example(s):
Date today year
Date today subtractDays:(1000 * 365)
Date today addDays:(1000 * 365)
|
-
year: year month: month day: day
-
arithmetic
-
+ days
-
return a new date representing 'days' after the receiver.
The argument should be some kind of integer.
This is the same as #addDays.
Usage example(s):
Date today + 7.
Date today to:(Date today + 28) by:7 do:[:date|
Transcript show:date weekday; show:', '; showCr:date
].
|
-
- aDateOrNumberOfDaysOrTimeDuration
-
return the delta in days (anInteger) between 2 dates or
subtract a number of days from a date returning a Date
Usage example(s):
Date today - Date yesterday
Date today - 3
Date today + 3
|
-
addDays: days
-
return a new date representing 'days' after the receiver.
The argument should be some kind of integer.
For ST-80 compatibility.
Usage example(s):
Date today => 03/18/2024
Date today addDays:1 => 03/19/2024
Date today addDays:7 => 03/25/2024
|
-
addMonths: numberOfMonths
-
Return a new instance which added numberOfMonths to self months.
Keep the day of month if possible.
If the month of the new instance has fewer days than self dayOfMonth set the day to the last
day of the new instance's month.
Does (probably) not work correct for resulting dates before calendar reform.
-
addMonthsUsingEncoding: numberOfMonths
-
Return a new instance which added numberOfMonths to self months.
Keep the day of month if possible.
If the month of the new instance has fewer days than self dayOfMonth,
set the day to the last day of the new instance's month.
Does (probably) not work correct for resulting dates before calendar reform.
-
addYears: numberOfYears
-
Return a new instance which is the same date, but numberOfYears ahead of self.
Cares about leap years.
I.e. goes from a leap year's 29.feb to a non-leap year's 28.feb.
-
daysSince: aDate
-
return the number of days between the receiver and the argument,
aDate, which should be some kind of date
Usage example(s):
Date today daysSince:(Date newDay:1 month:1 year:1901)
|
-
daysUntil: aDate
-
return the number of days between the receiver and the argument,
aDate, which should be some kind of date
Usage example(s):
(Date newDay:24 month:12 year:1994) daysUntil:(Date day:1 month:1 year:1995)
(Date newDay:1 month:2 year:1992) daysUntil:(Date day:1 month:3 year:1992)
(Date newDay:1 month:2 year:1994) daysUntil:(Date day:1 month:3 year:1994)
|delta|
delta := Date today
daysUntil:(Date newDay:25 month:12 year:Date today year).
Transcript show:'still ';
show:delta ;
showCR:' days till xmas'
|
-
firstDayInPreviousMonth: nMonths
-
Return the first day of a previous month (0=this month, 1=prev. month, etc.).
CG: there are two such methods - which one is obsolete?
Usage example(s):
(Date newDay:3 month:6 year:2009) firstDayInMonth
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:0
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:5
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:6
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:7
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:17
(Date newDay:3 month:6 year:2009) firstDayInPreviousMonth:18
|
-
firstDayOfPreviousMonth: nMonths
-
Return the first day of a previous month (0=this month).
CG: there are two such methods - which one is obsolete? (see firstDayInPreviousMonth:)
Usage example(s):
(Date newDay:3 month:6 year:2009) firstDayInMonth
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:0
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:5
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:6
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:7
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:17
(Date newDay:3 month:6 year:2009) firstDayOfPreviousMonth:18
|
-
subtractDate: aDate
-
return the number of days between the receiver and aDate
Usage example(s):
(Date newDay:1 month:1 year:1995) subtractDate:(Date newDay:24 month:12 year:1994)
(Date newDay:1 month:3 year:1992) subtractDate:(Date newDay:1 month:2 year:1992)
(Date newDay:1 month:3 year:1994) subtractDate:(Date newDay:1 month:2 year:1994)
|
-
subtractDays: days
-
return a new date representing 'days' before the receiver.
The argument should be some kind of integer.
For ST-80 compatibility
Usage example(s):
Date today => 03/18/2024
Date today subtractDays:1 => 03/17/2024
Date today subtractDays:7 => 03/11/2024
|
-
subtractMonths: numberOfMonths
-
Return a new instance which subtracted numberOfMonths to self months.
Keep the day of month if possible.
If the month of the new instance has fewer days than self dayOfMonth,
set the day to the last day of the new instance's month.
Does (probably) not work correct for resulting dates before calendar reform.
Usage example(s):
Date today subtractMonths:14
Date today subtractMonths:15
|
comparing
-
< aDate
-
return true, if the date represented by the receiver
is before the argument, aDate.
If compared against a timestamp, the receiver is treated like 00:00:00 midnight
Usage example(s):
Date today < (Date day:24 month:12 year:2000)
Date today < (Date day:24 month:12 year:1900)
Date today < Timestamp now
Date today-1 < Timestamp now
|
-
= aDate
-
return true, if the date represented by the receiver
is the same as the one represented by argument, aDate.
If compared against a timestamp, the receiver is treated like 00:00:00 midnight
Usage example(s):
^ dateEncoding = (Date encodeYear:aDate year
month:aDate month
day:aDate day)
|
Usage example(s):
Date today = ((Date today plusDays:7) minusDays:7)
|
-
> aDate
-
return true, if the date represented by the receiver
is after the argument, aDate.
If compared against a timestamp, the receiver is treated like 00:00:00 midnight
Usage example(s):
Date today > (Date newDay:24 month:12 year:2099)
Date today > (Date newDay:24 month:12 year:1900)
Date today > Timestamp now
Date today+1 > Timestamp now
|
-
hash
-
return an integer useful for hashing on dates
converting
-
asDate
-
return the receiver
-
asLocalTimestamp
-
return an TimeStamp instance, representing midnight of last night
Usage example(s):
Date today asLocalTimestamp
|
-
asTimeStamp
( an extension from the stx:goodies/webServer/comanche package )
-
Answer the receiver as a TimeStamp at midnight.
-
asTimestamp
-
return an Timestamp instance, representing midnight of last night
Usage example(s):
-
asUtcTimestamp
-
return an UtcTimestamp instance, representing midnight of last night
Usage example(s):
Date today asUtcTimestamp
|
inspecting
-
inspectorExtraAttributes
( an extension from the stx:libtool package )
-
extra (pseudo instvar) entries to be shown in an inspector.
obsolete
-
asAbsoluteTime
-
deprecated, use #asTimestamp
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
dayCount
-
return the number of days since 1st. Jan. 1901;
starting with 0 for this date.
Date>>fromDays: is the reverse operation.
Obsolete:
please use asDays for ST-80 compatibility
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
dayName
-
return the week-day of the receiver as a string.
The returned string depends on the language setting.
Expect things like 'monday', 'tuesday' ...
Obsolete:
use #weekday for ST-80 compatibility
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
leap
-
return true, if the receiver's year is a leap year
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
minusDays: days
-
return a new date representing 'days' before the receiver.
The argument should be some kind of integer.
Obsolete:
Please don't use this method since it will vanish.
Use #subtractDays: instead for ST-80 compatibility.
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
plusDays: days
-
return a new date representing 'days' after the receiver.
The argument should be some kind of integer.
Obsolete:
Please don't use this method since it will vanish.
Use #addDays: instead for ST-80 compatibility.
** This is an obsolete interface - do not use it (it may vanish in future versions) **
printing & storing
-
addPrintBindingsTo: aDictionary
-
marked as obsolete by exept MBP at 04-12-2021
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
addPrintBindingsTo: aDictionary language: languageOrNil
-
marked as obsolete by exept MBP at 04-12-2021
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
inspectorValueStringInListFor: anInspector
( an extension from the stx:libtool package )
-
returns a string to be shown in the inspector's list
-
printIso8601CompressedOn: aStream
-
append the compact iso8601 representation of the receiver to aStream.
This format looks like:
19990101T240000
or, for zero hr:min:sec,
19990101
Of course, a 24 hour clock is used.
No timezone information is added, so the reader will read as local time.
-
printIso8601FormatOn: aStream
-
append the iso8601 representation of the receiver to aStream.
This format looks like:
1999-01-01T24:00:00
or, for zero hr:min:sec,
1999-01-01
Of course, a 24 hour clock is used.
No timezone information is added, so the reader will read as local time.
Usage example(s):
Timestamp now printStringIso8601Format -> '2018-05-09T12:17:32.646+02'.
Date today printStringIso8601Format -> '2018-05-09'.
Time now printStringIso8601Format -> '2018-05-09'.
Timestamp now printIso8601FormatOn:Transcript. Transcript cr.
Timestamp readIso8601FormatFrom:(Timestamp now printStringIso8601Format).
UtcTimestamp now printIso8601FormatOn:Transcript. Transcript cr.
UtcTimestamp readIso8601FormatFrom:(UtcTimestamp now printStringIso8601Format).
|
-
printOn: aStream
-
append a printed representation of the receiver to aStream
Usage example(s):
Date today printOn:Transcript. Transcript cr.
|
-
printOn: aStream format: aFormatStringOrSqueakFormatArray
-
print using a format string;
See AbstractTime::PrintBindingMirror class >> #documentation for allowed format strings
Usage example(s):
Date today printOn:Transcript format:'%y%m%d' (iso format)
Date today printOn:Transcript format:'%y-%m-%d' (iso format)
Date today printOn:Transcript format:'%y-W%w' (iso format - working week)
Date today printOn:Transcript format:'%d-%m-%y' (european trivia format)
Date today printOn:Transcript format:'%m/%d/%y' (us trivia format)
Date today printOn:Transcript format:'%D-%(monthName)-%y' (us trivia format)
Date today printOn:Transcript format:'%D-%(MonthName)-%y' (us trivia format)
Date today printOn:Transcript format:'%D-%(MONTHNAME)-%y' (us trivia format)
Date today printOn:Transcript format:'%(DayName), %D%(nth) of %(MonthName), %y'
Date today printOn:Transcript format:'%(DayName), %(MonthName) %d, %y' language:#en
Date today printOn:Transcript format:'%(ShortDayName), %D-%(ShortMonthName)-%y'
Date today printOn:Transcript format:'%d%m%Y' (millenium bug format - danger)
Date today printOn:Transcript format:'%d%m%(Y1950)' (millenium bug partial workaround format - danger)
Date today printOn:Transcript format:'%d%m%(Y1980)' (millenium bug partial workaround format - danger)
Date today printOn:Transcript format:'Today is the %(weekDay) day of the week'
Date today printOn:Transcript format:'Today is %(year).%(monthRoman).%D' (hungarian format)
Date today printOn:Transcript format:'Today is %(D) %(monthRoman) %y' (poland)
Date today printOn:Transcript format:'Today is %(D)-%(monthRoman)-%y' (romania)
Date today printOn:Transcript format:'Today is %(D)/%(mon)-%Y' (sweden)
Date today printOn:Transcript format:'Anno domini %(yearRoman)'
Date today printOn:Transcript format:'%y年%(mon)月%d日' (select a font, which can display those chars)
Date today printOn:Transcript format:'%(dayOfYear)'
|
Usage example(s):
short form (as in blogs like www.stackoverflow, www.superuser etc.)
Date today printOn:Transcript format:'%(MonthName) %D ''%Y'
Timestamp now printOn:Transcript format:'%(MonthName) %D ''%Y at %h:%m'
|
Usage example(s):
Squeak format spec:
String streamContents:[:s |
Date today printOn:s format:#(1 2 3 $/ 1 2)
]
|
-
printOn: aStream format: aFormatStringOrSqueakFormatArray language: languageOrNil
-
print using a format string;
languageOrNil can only be #en or nil for the current language.
See AbstractTime::PrintBindingMirror class >> #documentation for allowed format strings
Usage example(s):
Date today
printOn:Transcript
format: c'%y-%m-%d\n'
language:#en
|
-
printOn: aStream language: languageOrNil
-
append a printed representation of the receiver to aStream.
The argument languageOrNil can only be #en or nil for the current language.
Usage example(s):
Date today printOn:Transcript language:#en
Date today printOn:Transcript language:#de
|
-
printStringFormat: aFormatStringOrArray
-
print using a format string.
See AbstractTime::PrintBindingMirror class >> #documentation for allowed format strings
Usage example(s):
Date today printStringFormat:'%y%m%d' (iso format)
Date today printStringFormat:'%y-%m-%d' (iso format)
Date today printStringFormat:'%y-W%w' (iso format - working week)
Date today printStringFormat:'%d-%m-%y' (european trivia format)
Date today printStringFormat:'%m/%d/%y' (us trivia format)
Date today printStringFormat:'%D-%(monthName)-%y' (us trivia format)
Date today printStringFormat:'%D-%(MonthName)-%y' (us trivia format)
Date today printStringFormat:'%D-%(MONTHNAME)-%y' (us trivia format)
Date today printStringFormat:'%(DayName), %D%(nth) of %(MonthName), %y'
Date today printStringFormat:'%(ShortDayName), %D-%(ShortMonthName)-%y'
Date today printStringFormat:'%d%m%Y' (millenium bug format - danger)
Date today printStringFormat:'Today is day %(weekDay) of the week'
Date today printStringFormat:'Today is the %(weekDay)%(weekDayNth) day of the week'
Date today printStringFormat:'Today is the %(Day)%(nth) day of the month'
|
-
printStringFormat: aFormatStringOrArray language: languageOrNil
-
print using a format string;
languageOrNil can only be #en or nil for the current language.
See AbstractTime::PrintBindingMirror class >> #documentation for allowed format strings
Usage example(s):
Date today printStringFormat:'%y%m%d' (iso format)
Date today printStringFormat:'%y-%m-%d' (iso format)
Date today printStringFormat:'%y-W%w' (iso format - working week)
Date today printStringFormat:'%d-%m-%y' (european trivia format)
Date today printStringFormat:'%m/%d/%y' (us trivia format)
Date today printStringFormat:'%D-%(monthName)-%y' (us trivia format)
Date today printStringFormat:'%D-%(MonthName)-%y' (us trivia format)
Date today printStringFormat:'%D-%(MONTHNAME)-%y' (us trivia format)
Date today printStringFormat:'%(DayName), %D%(nth) of %(MonthName), %y'
Date today printStringFormat:'%(ShortDayName), %D-%(ShortMonthName)-%y'
Date today printStringFormat:'%d%m%Y' (millenium bug format - danger)
Date today printStringFormat:'Today is day %(weekDay) of the week'
Date today printStringFormat:'Today is the %(weekDay)%(weekDayNth) day of the week'
Date today printStringFormat:'Today is the %(Day)%(nth) day of the month'
|
-
printStringIso8601
-
return the Iso8601 representation of the receiver with local timezon information.
This format looks like:
1999-01-01T24:00:00
or, for zero hr:min:sec,
1999-01-01
Of course, a 24 hour clock is used.
Usage example(s):
Date today printStringIso8601
Timestamp now printStringIso8601
Time now printStringIso8601
|
-
printStringIso8601Compressed
-
return the Iso8601 representation of the receiver with local timezon information.
This format looks like:
19990101T240000
or, for zero hr:min:sec (i.e. Date),
19990101
Of course, a 24 hour clock is used.
Usage example(s):
Date today printStringIso8601
Date today printStringIso8601Compressed
Timestamp now printStringIso8601
Timestamp now printStringIso8601Compressed
Time now printStringIso8601
Time now printStringIso8601Compressed
|
-
storeOn: aStream
-
append a representation to aStream, from which the receiver
can be reconstructed
Usage example(s):
Date today storeOn:Transcript
Date today storeString
|
-
yyyymmdd
( an extension from the stx:goodies/webServer/comanche package )
-
no delimiters
Usage example(s):
private-accessing
-
dateEncoding
-
the internal encoding is stricktly private,
and should not be used outside.
-
dateEncoding: anInteger
-
the internal encoding is stricktly private,
and should not be used outside.
-
fromOSTime: osTime
-
set my dateEncoding as date in the local timezone from an OS time.
This somewhat clumsy implementation hides the OS's date representation
(i.e. makes this class independent of what the OS starts its time values with).
Don't use this method, the osTime representation is totally unportable.
-
fromUtcOSTime: osTime
-
set my dateEncoding as UTC date from an OS time.
This somewhat clumsy implementation hides the OS's date representation
(i.e. makes this class independent of what the OS starts its time values with).
Don't use this method, the osTime representation is totally unportable.
-
getMilliseconds
-
protocol compatibility with Timestamp.
Only use to get millisecond deltas between dates (if at all).
Returns the number of milliseconds of midnight since the epoch (1.1.1970).
Notice:
because Date does not include timezone info (in contrast to Timestamp),
this returns the millis of the UTC date (see example below).
Notice:
beacuse of that, always use Timestamps for comparisons.
Usage example(s):
Date today asUtcTimestamp getMilliseconds
-
Date today getMilliseconds
Date today asTimestamp getMilliseconds
-
Date today getMilliseconds
(Date year:1970 month:1 day:1) asTimestamp getMilliseconds -- local time
(Date year:1970 month:1 day:1) asUtcTimestamp getMilliseconds -- utc time
(Date year:1970 month:1 day:1) getMilliseconds -- utc time
|
testing
-
isDate
-
(comment from inherited method)
return true if the receiver is some kind of date;
false is returned here - the method is only redefined in Date.
visiting
-
acceptVisitor: aVisitor with: aParameter
-
dispatch for visitor pattern; send #visitDate:with: to aVisitor
|