AbstractTime.st
author Claus Gittinger <cg@exept.de>
Thu, 07 Dec 1995 22:32:39 +0100
changeset 699 12f456343eea
parent 528 a083413dfbe8
child 1227 e89b39909085
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     1
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     3
	      All Rights Reserved
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     4
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    11
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    12
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    13
Magnitude subclass:#AbstractTime
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    14
	 instanceVariableNames:''
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    15
	 classVariableNames:''
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    16
	 poolDictionaries:''
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    17
	 category:'Magnitude-General'
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    18
!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    19
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    20
!AbstractTime class methodsFor:'documentation'!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    21
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    22
copyright
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    23
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1995 by Claus Gittinger
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    25
	      All Rights Reserved
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    26
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    33
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    34
!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    35
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    36
documentation
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    37
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    38
    This is an abstract class; there are no instances in the system.
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    39
    It is meant as a home for methods common to time handling classes.
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    40
"
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    41
! !
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    42
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    43
!AbstractTime class methodsFor:'instance creation'!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    44
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    45
dateAndTimeNow
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    46
    "return an array filled with date and time"
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    47
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    48
    ^ Array with:(Date today) with:(Time now)
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    49
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    50
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    51
     Time dateAndTimeNow
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    52
    "
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    53
!
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    54
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    55
fromOSTime:osTime
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    56
    "return a time, representing the time given by the operatingSystem time.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    57
     Not meant for public use."
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
    58
418
claus
parents: 384
diff changeset
    59
    |low hi|
claus
parents: 384
diff changeset
    60
claus
parents: 384
diff changeset
    61
    "now migrating to support LargeInteger OS-time handles ...
claus
parents: 384
diff changeset
    62
     ... in the meantime, support both formats."
claus
parents: 384
diff changeset
    63
claus
parents: 384
diff changeset
    64
    (osTime isMemberOf:Array) ifTrue:[
claus
parents: 384
diff changeset
    65
	low := osTime at:1.
claus
parents: 384
diff changeset
    66
	hi :=  osTime at:2.
claus
parents: 384
diff changeset
    67
    ] ifFalse:[
claus
parents: 384
diff changeset
    68
	low := osTime bitAnd:16rFFFF.
claus
parents: 384
diff changeset
    69
	hi := (osTime bitShift:-16) bitAnd:16rFFFF.
claus
parents: 384
diff changeset
    70
    ].
claus
parents: 384
diff changeset
    71
    ^ self basicNew fromOSTimeLow:low and:hi
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    72
!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    73
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    74
fromOSTimeLow:osTimeLow and:osTimeHigh
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    75
    "return a time, representing the time given by the operatingSystem time.
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    76
     Not meant for public use."
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    77
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    78
    ^ self basicNew fromOSTimeLow:osTimeLow and:osTimeHigh
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    79
!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    80
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    81
fromSeconds:seconds
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    82
    "return an instance that is constructed from seconds.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    83
     This method is only allowed for second values as returned by
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    84
     getSeconds, possibly adding/subtracting to that. Never
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    85
     depend on any specific interpretation of the seconds."
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    86
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    87
   ^ self basicNew setSeconds:seconds
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    88
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
    89
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    90
     Time fromSeconds:0             should return midnight
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    91
     AbsoluteTime fromSeconds:0     on UNIX: returns 1st. Jan 1970
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    92
				    on others: dont know
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    93
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    94
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    95
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    96
now
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    97
    "return an instance of myself representing this moment"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    98
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
    99
    ^ self basicNew fromOSTime:(OperatingSystem getTimeParts)
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   100
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   101
    "
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   102
     AbsoluteTime now   
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   103
     Time now   
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   104
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   105
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   106
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   107
!AbstractTime class methodsFor:'ST-80 compatibility'!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   108
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   109
totalSeconds
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   110
    "returns an internal second clock. Dont interpret the returned
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   111
     value - if at all, use it to compute time deltas, by subtracting
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   112
     returned values."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   113
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   114
    ^ self secondClock
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   115
! !
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   116
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   117
!AbstractTime class methodsFor:'obsolete'!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   118
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   119
fromUnixTimeLow:low and:hi
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   120
    "return an instance of myself, given the unix time.
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   121
     Internal interface - not for public use."
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   122
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   123
    ^ self fromOSTimeLow:low and:hi
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   124
! !
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   125
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   126
!AbstractTime class methodsFor:'queries'!
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   127
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   128
millisecondClockValue
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   129
    "return the millisecond clock - since this one overruns
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   130
     regularly, use the value only for short timing deltas.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   131
     Also remember that it wraps when compares these values."
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   132
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   133
    ^ OperatingSystem getMillisecondTime.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   134
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   135
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   136
     Time millisecondClockValue 
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   137
    "
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   138
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   139
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   140
secondClock
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   141
    "return seconds of now - for GNU-ST compatibility"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   142
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   143
    ^ OperatingSystem getTime
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   144
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   145
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   146
     AbstractTime secondClock    
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   147
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   148
! !
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   149
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   150
!AbstractTime class methodsFor:'timing evaluations'!
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   151
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   152
millisecondsToRun:aBlock
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   153
    "evaluate the argument, aBlock; return the number of milliseconds it took"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   154
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   155
    |startTime endTime|
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   156
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   157
    startTime := self millisecondClockValue.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   158
    aBlock value.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   159
    endTime := self millisecondClockValue.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   160
    ^ endTime - startTime
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   161
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   162
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   163
     Time millisecondsToRun:[100 factorial]  
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   164
    "
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   165
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   166
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   167
secondsToRun:aBlock
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   168
    "evaluate the argument, aBlock; return the number of seconds it took"
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   169
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   170
    |startTime endTime|
360
claus
parents: 275
diff changeset
   171
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   172
    startTime := self secondClock.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   173
    aBlock value.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   174
    endTime := self secondClock.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   175
    ^ endTime - startTime
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   176
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   177
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   178
     Time secondsToRun:[1000 factorial]  
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   179
    "
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   180
! !
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   181
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   182
!AbstractTime methodsFor:'accessing'!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   183
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   184
hourInDay
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   185
    "return the hours (0..23)"
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   186
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   187
    ^ self hours
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   188
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   189
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   190
     AbsoluteTime now hourInDay 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   191
     Time now hourInDay 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   192
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   193
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   194
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   195
minuteInDay
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   196
    "return the minutes (0..59)"
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   197
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   198
    ^ self minutes.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   199
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   200
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   201
     AbsoluteTime now minuteInDay 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   202
     Time now minuteInDay 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   203
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   204
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   205
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   206
secondDay
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   207
    "return the seconds (0..59)"
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   208
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   209
    ^ self seconds
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   210
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   211
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   212
     AbsoluteTime now secondInDay 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   213
     Time now seconds 
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   214
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   215
! !
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   216
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   217
!AbstractTime methodsFor:'arithmetic'!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   218
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   219
- aTime
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   220
    "return the delta in seconds between 2 times."
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   221
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   222
    ^ self getSeconds - (aTime getSeconds)
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   223
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   224
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   225
     |t1 t2|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   226
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   227
     t1 := AbsoluteTime now.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   228
     (Delay forSeconds:5) wait.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   229
     t2 := AbsoluteTime now.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   230
     'seconds passed: ' print. (t2 - t1) printNL.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   231
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   232
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   233
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   234
addHours:numberOfHours
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   235
    "return a new instance of myself, numberOfHours afterwards."
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   236
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   237
    ^ self addSeconds:(numberOfHours * (60 * 60))
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   238
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   239
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   240
     |t|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   241
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   242
     t := AbsoluteTime now.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   243
     t printNL.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   244
     (t addHours:50) printNL
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   245
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   246
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   247
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   248
addMinutes:numberOfMinutes
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   249
    "return a new instance of myself, numberOfMinutes afterwards."
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   250
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   251
    ^ self addSeconds:(numberOfMinutes * 60)
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   252
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   253
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   254
     |t|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   255
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   256
     t := AbsoluteTime now. t printNL. (t addMinutes:50) printNL
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   257
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   258
     t := Time now. t printNL. (t addMinutes:50) printNL
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   259
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   260
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   261
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   262
addSeconds:numberOfSeconds
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   263
    "return a new instance of myself, numberOfSeconds afterwards."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   264
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   265
    ^ self species basicNew setSeconds:(self getSeconds + numberOfSeconds)
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   266
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   267
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   268
     |t|
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   269
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   270
     t := AbsoluteTime now. t printNL. (t addSeconds:50) printNL.
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   271
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   272
     t := Time now. t printNL. (t addSeconds:50) printNL
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   273
    "
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   274
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   275
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   276
addTime:timeAmount
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   277
    "return a new instance of myself, timeAmount seconds afterwards.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   278
     AddTime is a bad name - it does not add a time, but expects
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   279
     a number. Use any of addSeconds/addHours etc."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   280
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   281
    ^ self species basicNew setSeconds:(self getSeconds + timeAmount)
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   282
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   283
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   284
subtractHours:numberOfHours
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   285
    "return a new instance of myself, numberOfHours before."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   286
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   287
    ^ self subtractSeconds:(numberOfHours * (60 * 60))
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   288
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   289
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   290
     |t|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   291
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   292
     t := AbsoluteTime now.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   293
     t printNL.
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   294
     (t subtractHours:50) printNL
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   295
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   296
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   297
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   298
subtractMinutes:numberOfMinutes
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   299
    "return a new instance of myself, numberOfMinutes before."
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   300
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   301
    ^ self subtractSeconds:(numberOfMinutes * 60)
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   302
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   303
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   304
     |t|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   305
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   306
     t := AbsoluteTime now.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   307
     t printNL.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   308
     (t subtractMinutes:50) printNL
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   309
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   310
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   311
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   312
subtractSeconds:numberOfSeconds
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   313
    "return a new instance of myself, numberOfSeconds before."
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   314
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   315
    ^ self species basicNew setSeconds:(self getSeconds - numberOfSeconds)
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   316
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   317
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   318
     |t|
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   319
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   320
     t := AbsoluteTime now.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   321
     t printNL.
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   322
     (t subtractSeconds:50) printNL
275
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   323
    "
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   324
!
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   325
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   326
subtractTime:timeAmount
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   327
    "return a new instance opf myself, timeAmount seconds before myself.
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   328
     SubtractTime is a bad name - it does not subtract a time, but expects
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   329
     a number. Use any of subtractSeconds/subtractHours etc."
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   330
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   331
    ^ self species basicNew setSeconds:(self getSeconds - timeAmount)
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   332
! !
a76029ddaa98 *** empty log message ***
claus
parents: 240
diff changeset
   333
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   334
!AbstractTime methodsFor:'private'!
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   335
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   336
fromOSTime:timeParts
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   337
    "set my time, from operatingSystems time parts"
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   338
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   339
    ^ self fromOSTimeLow:(timeParts at:1) and:(timeParts at:2)
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   340
!
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   341
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   342
fromOSTimeTimeLow:lowTime and:hiTime
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   343
    "set my time, from operatingSystems time parts.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   344
     Since I am abstract (not knowing how the time is actually
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   345
     represented), this must be done by a concrete class."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   346
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   347
    ^ self subclassResponsibility
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   348
!
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   349
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   350
getSeconds
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   351
    "get the seconds.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   352
     Since I am abstract (not knowing how the time is actually
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   353
     represented), this must be done by a concrete class."
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   354
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   355
    ^ self subclassResponsibility
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   356
!
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   357
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   358
setSeconds:secs
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   359
    "set the seconds.
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   360
     Since I am abstract (not knowing how the time is actually
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   361
     represented), this must be done by a concrete class."
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   362
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   363
    ^ self subclassResponsibility
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   364
! !
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   365
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   366
!AbstractTime class methodsFor:'documentation'!
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   367
699
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   368
version
12f456343eea checkin from browser
Claus Gittinger <cg@exept.de>
parents: 528
diff changeset
   369
    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.8 1995-12-07 21:31:40 cg Exp $'
240
f5ff68fffb92 Initial revision
claus
parents:
diff changeset
   370
! !