diff -r 8a39ab36a0f0 -r 0335bec855aa AbstractOperatingSystem.st --- a/AbstractOperatingSystem.st Wed Jul 16 16:01:40 2003 +0200 +++ b/AbstractOperatingSystem.st Wed Jul 16 16:07:30 2003 +0200 @@ -21,6 +21,14 @@ category:'System-Support' ! +Object subclass:#TimeInfo + instanceVariableNames:'year month day hours minutes seconds utcOffset dst milliseconds + dayInYear dayInWeek' + classVariableNames:'' + poolDictionaries:'' + privateIn:AbstractOperatingSystem +! + !AbstractOperatingSystem primitiveDefinitions! %{ @@ -4817,7 +4825,18 @@ dayInYear (1..) and dayInWeek (1..). Conversion is to localtime including any daylight saving adjustments." - self subclassResponsibility + |millis osSeconds ret| + + millis := osTime \\ 1000. + osSeconds := osTime // 1000. + ret := self timeInfoFromSeconds:osSeconds localTime:true. + ret milliseconds:millis. + ^ ret + + " + OperatingSystem computeTimeAndDateFrom:0 + OperatingSystem computeTimeAndDateFrom:1011 + " ! computeTimePartsOf:osTime for:aBlock @@ -4830,12 +4849,32 @@ computeUTCTimeAndDateFrom:osTime "given an OS-dependent time in osTime, return an Array - containing year, month, day, hour, minute and seconds, - offset to UTC, daylight savings time flag, milliseconds, - dayInYear (1..) and dayInWeek (1..). - Conversion is to UTC." - - self subclassResponsibility + containing: + (full-) year, + month, (1..) + day, (1..) + hour, (0..23) + minute (0..59) + seconds, (0..59) + offset to UTC, (seconds) + daylight savings time flag, + milliseconds, (0..999) + dayInYear (1..) + dayInWeek (1..). + Conversion is to utc." + + |millis osSeconds ret| + + millis := osTime \\ 1000. + osSeconds := osTime // 1000. + ret := self timeInfoFromSeconds:osSeconds localTime:false. + ret milliseconds:millis. + ^ ret + + " + OperatingSystem computeUTCTimeAndDateFrom:0 + OperatingSystem computeUTCTimeAndDateFrom:1011 + " ! computeUTCTimePartsOf:osTime for:aBlock @@ -5019,6 +5058,17 @@ only the calling thread sleep)." self subclassResponsibility +! + +timeInfoClass + ^ TimeInfo +! + +timeInfoFromSeconds:osSeconds localTime:isLocalTime + "return a timeInfo structure containing values for the given OS-second value. + An internal helper" + + self subclassResponsibility ! ! !AbstractOperatingSystem class methodsFor:'users & groups'! @@ -5387,10 +5437,115 @@ ^ false ! ! +!AbstractOperatingSystem::TimeInfo methodsFor:'accessing'! + +at:index + "backward compatibility" + + self obsoleteMethodWarning:'use accessor for index ', index printString. + index == 1 ifTrue:[ + ^ self year. + ]. + index == 2 ifTrue:[ + ^ self month. + ]. + index == 3 ifTrue:[ + ^ self day. + ]. + index == 4 ifTrue:[ + ^ self hours. + ]. + index == 5 ifTrue:[ + ^ self minutes. + ]. + index == 6 ifTrue:[ + ^ self seconds. + ]. + index == 7 ifTrue:[ + ^ self utcOffset. + ]. + index == 8 ifTrue:[ + ^ self dst. + ]. + index == 9 ifTrue:[ + ^ self milliseconds. + ]. + index == 10 ifTrue:[ + ^ self dayInYear. + ]. + index == 11 ifTrue:[ + ^ self dayInWeek. + ]. + self subscriptBoundsError:index +! + +day + ^ day +! + +dayInWeek + ^ dayInWeek +! + +dayInYear + ^ dayInYear +! + +dst + ^ dst +! + +hours + ^ hours +! + +milliseconds + ^ milliseconds +! + +milliseconds:something + milliseconds := something. +! + +minutes + ^ minutes +! + +month + ^ month +! + +seconds + ^ seconds +! + +utcOffset + ^ utcOffset +! + +year + ^ year +! + +year:yearArg month:monthArg day:dayArg hours:hoursArg minutes:minutesArg seconds:secondsArg utcOffset:utcOffsetArg dst:dstArg dayInYear:dayInYearArg dayInWeek:dayInWeekArg + "set instance variables (automatically generated)" + + year := yearArg. + month := monthArg. + day := dayArg. + hours := hoursArg. + minutes := minutesArg. + seconds := secondsArg. + utcOffset := utcOffsetArg. + dst := dstArg. + dayInYear := dayInYearArg. + dayInWeek := dayInWeekArg. +! ! + !AbstractOperatingSystem class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.104 2003-07-15 14:03:28 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.105 2003-07-16 14:07:23 cg Exp $' ! ! AbstractOperatingSystem initialize!