--- a/Date.st Sun Aug 20 16:23:32 2000 +0200
+++ b/Date.st Mon Aug 21 15:26:29 2000 +0200
@@ -366,6 +366,30 @@
"
"Modified: 1.7.1996 / 15:20:16 / cg"
+!
+
+tomorrow
+ "return a date, representing tomorrow.
+ See also: Time now / AbsoluteTime now."
+
+ ^ Date today addDays:1
+
+ "
+ Date tomorrow
+ Date tomorrow dayInWeek
+ "
+!
+
+yesterday
+ "return a date, representing yesterday.
+ See also: Time now / AbsoluteTime now."
+
+ ^ Date today subtractDays:1
+
+ "
+ Date yesterday
+ Date yesterday dayInWeek
+ "
! !
!Date class methodsFor:'general queries'!
@@ -605,6 +629,41 @@
"
!
+weekInYearOf:aDateOrTimestamp
+ "for a given date or timeStamp, return the week-number.
+ the returned week number starts at 1. Week nr. 1 includes
+ Jan, 1st of the dates year up to (and including) the sunday after that date.
+ i.e. each week is Mon .. Sun
+ (that is: Sunday is treated as the last day of the week and
+ belongs to the previous week)"
+
+ |dayInYear dayInWeekOf1stJan daysIn1stWeek week|
+
+ dayInYear := aDateOrTimestamp dayInYear.
+ "/ what weekDay is 1st January of that year ?
+ dayInWeekOf1stJan := (AbsoluteTime newDay:1 year:(aDateOrTimestamp year)) dayInWeek. "/ 1 for monday
+ "/ how many days left in that week ?
+ daysIn1stWeek := 7 - dayInWeekOf1stJan + 1.
+ dayInYear <= daysIn1stWeek ifTrue:[^ 1].
+ "/ compute the week
+ week := (dayInYear - daysIn1stWeek - 1) // 7.
+ ^ week + 2
+
+ "
+ AbsoluteTime today weekInYear
+ Date weekInYearOf:(AbsoluteTime newDay:1 year:2000) was a saturday
+ Date weekInYearOf:(AbsoluteTime newDay:2 year:2000) was a sunday
+ Date weekInYearOf:(AbsoluteTime newDay:3 year:2000) was a monday
+ Date weekInYearOf:(AbsoluteTime newDay:4 year:2000) was a tuesday
+ Date weekInYearOf:(AbsoluteTime newDay:5 year:2000) was a wed
+ Date weekInYearOf:(AbsoluteTime newDay:6 year:2000) was a thursday
+ Date weekInYearOf:(AbsoluteTime newDay:7 year:2000) was a fri
+ Date weekInYearOf:(AbsoluteTime newDay:8 year:2000) was a sat
+ Date weekInYearOf:(AbsoluteTime newDay:9 year:2000) was a sun
+ Date weekInYearOf:(AbsoluteTime newDay:10 year:2000) was a monday
+ "
+!
+
yearAsDays: yearInteger
"Returns the number of days since Jan 1, 1901. (GNU)
to the first Jan of the year, yearInteger.
@@ -925,8 +984,12 @@
^ wday
"
- Date today dayInWeek
+ Date today dayInWeek
+ Date tomorrow dayInWeek
+ Date yesterday dayInWeek
Date today weekday
+ Date tomorrow weekday
+ Date yesterday weekday
(Date day:15 month:4 year:1959) dayInWeek
(Date day:1 month:1 year:1901) dayInWeek
(Date day:31 month:12 year:1899) dayInWeek
@@ -935,6 +998,19 @@
"Modified: / 1.2.1998 / 14:10:27 / cg"
!
+dayInYear
+ "return the day-nr within the year of the receiver - 1 .. 365/366"
+
+ ^ self asAbsoluteTime dayInYear
+
+ "
+ Date today dayInYear
+ (Date newDay:1 year:1999) dayInYear
+ (Date newDay:1 year:2000) dayInYear
+ (Date newDay:2 year:2000) dayInYear
+ "
+!
+
dayName
"return the week-day of the receiver as a string.
The returned string depends on the language setting.
@@ -1027,6 +1103,27 @@
"
!
+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)"
+
+ ^ self class weekInYearOf:self
+
+ "
+ 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
+ "
+!
+
weekday
"return the week-day of the receiver as a string.
The returned string depends on the language setting.
@@ -1409,6 +1506,6 @@
!Date class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.52 2000-08-11 17:39:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.53 2000-08-21 13:26:29 cg Exp $'
! !
Date initialize!