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