Timestamp.st
author claus
Mon, 10 Oct 1994 01:20:00 +0100
changeset 154 d4236ec280a6
parent 92 0c73b48551ac
child 213 3b56a17534fd
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     1
"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
     3
	      All Rights Reserved
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     4
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    11
"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    12
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    13
Magnitude subclass:#AbsoluteTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'secondsLow secondsHi'
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    17
       category:'Magnitude-General'
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    18
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    19
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    20
AbsoluteTime comment:'
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    21
COPYRIGHT (c) 1989 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    22
	      All Rights Reserved
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    23
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    24
$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.6 1994-10-10 00:19:36 claus Exp $
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    25
'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    26
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    27
!AbsoluteTime class methodsFor:'documentation'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    28
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    29
copyright
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    30
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    31
 COPYRIGHT (c) 1989 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    32
	      All Rights Reserved
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    33
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    34
 This software is furnished under a license and may be used
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    35
 only in accordance with the terms of that license and with the
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    37
 be provided or otherwise made available to, or used by, any
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    38
 other person.  No title to or ownership of the software is
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    39
 hereby transferred.
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    40
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    41
!
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    42
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    43
version
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    44
"
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    45
$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.6 1994-10-10 00:19:36 claus Exp $
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    46
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    47
!
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    48
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    49
documentation
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    50
"
77
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    51
    This class represents time values in seconds from 1st. Jan 1970, as
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    52
    used in the Unix operating system. Its implementation is not the same
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    53
    as in ST-80 (which represents Time as seconds from 1. Jan 1901.
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    54
    Actually, the implementation does not even know which time/date the
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    55
    OperatingSystem bases its time upon - it is simply keeping the value(s)
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    56
    as return from the OS when asked for the time.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    57
    For conversion, these values are given back to the OS, which will know
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    58
    how to convert these times.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    59
    This has the advantage, that time-stamps on files (such as last-access-
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    60
    time or last-modifiaction-time) can be handled transparent to other
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    61
    times (especially comparison).
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    62
77
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    63
    Since unix-times are 32 bit which does not fit into a SmallInteger, 
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    64
    we keep low and hi 16bits of the time separately (it could have been 
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    65
    implemented using LargeIntegers though).
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    66
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    67
    This class is typically abstract (it does not have to be, though).
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    68
    See Time for more details.
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    69
"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    70
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    71
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    72
!AbsoluteTime class methodsFor:'instance creation'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    73
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    74
secondClock
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    75
    "return seconds of now - for GNU-ST compatibility"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    76
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    77
    ^ OperatingSystem getTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    78
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    79
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    80
millisecondClockValue
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    81
    "return the millisecond clock - since this one overruns
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    82
     regularly, use only for short timing deltas."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    83
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    84
    ^ OperatingSystem getMillisecondTime.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    85
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    86
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    87
fromUnixTimeLow:low and:hi
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    88
    "return an instance of Time, given the unix time.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    89
     Internal interface - not for public use."
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    90
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    91
    ^ self basicNew setSecondsLow:low and:hi
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    92
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    93
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    94
dateAndTimeNow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    95
    "return an array filled with date and time"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    96
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    97
    ^ Array with:(Date today) with:(Time now)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    98
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    99
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   100
!AbsoluteTime class methodsFor:'timing evaluations'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   101
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   102
secondsToRun:aBlock
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   103
    "evaluate the argument, aBlock; return the number of seconds it took"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   104
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   105
    |startTime endTime|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   106
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   107
    startTime := self now.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   108
    aBlock value.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   109
    endTime := self now.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   110
    ^ endTime - startTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   111
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   112
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   113
millisecondsToRun:aBlock
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   114
    "evaluate the argument, aBlock; return the number of milliseconds it took"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   115
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   116
    |startTime endTime|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   117
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   118
    startTime := self millisecondClockValue.
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   119
    aBlock value.
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   120
    endTime := self millisecondClockValue.
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   121
    ^ endTime - startTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   122
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   123
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   124
!AbsoluteTime methodsFor:'accessing'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   125
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   126
hourInDay
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   127
    "return the hour-part"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   128
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   129
    |hr|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   130
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   131
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   132
	:hours :minutes :secs |
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   133
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   134
	hr := hours
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   135
    ].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   136
    ^ hr
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   137
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   138
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   139
minuteInDay
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   140
    "return the minute-part"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   141
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   142
    |m|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   143
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   144
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   145
	:hours :minutes :secs |
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   146
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   147
	m := minutes
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   148
    ].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   149
    ^ m
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   150
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   151
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   152
secondInDay
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   153
    "return the second-part"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   154
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   155
    |s|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   156
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   157
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   158
	:hours :minutes :secs |
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   159
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   160
	s := secs
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   161
    ].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   162
    ^ s
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   163
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   164
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   165
day
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   166
    "return the day-in-month of the receiver (1..31).
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   167
     Obsolete; use instances of Date for this."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   168
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   169
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   170
				   for:[:year :month :day |
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   171
	^ day
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   172
    ]
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   173
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   174
    "
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   175
     Time now day
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   176
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   177
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   178
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   179
month
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   180
    "return the month of the receiver (1..12).
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   181
     Obsolete; use instances of Date for this."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   182
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   183
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   184
				   for:[:year :month :day |
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   185
	^ month
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   186
    ]
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   187
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   188
    "
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   189
     Time now month
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   190
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   191
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   192
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   193
year
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   194
    "return the year of the receiver i.e. 1992.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   195
     Obsolete; use instances of Date for this."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   196
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   197
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   198
				   for:[:year :month :day |
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   199
	^ year
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   200
    ]
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   201
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   202
    "
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   203
     Time now year
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   204
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   205
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   206
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   207
!AbsoluteTime methodsFor:'comparing'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   208
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   209
> aTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   210
    secondsHi > aTime secondsHi ifTrue:[^ true].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   211
    secondsHi < aTime secondsHi ifTrue:[^ false].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   212
    ^ secondsLow > aTime secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   213
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   214
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   215
< aTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   216
    secondsHi < aTime secondsHi ifTrue:[^ true].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   217
    secondsHi > aTime secondsHi ifTrue:[^ false].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   218
    ^ secondsLow < aTime secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   219
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   220
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   221
= aTime
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   222
    (aTime species == self species) ifFalse:[^ false].
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   223
    ^ (secondsLow == aTime secondsLow) and:[secondsHi == aTime secondsHi]
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   224
!
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   225
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   226
hash
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   227
    "return an integer useful for hashing on times"
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   228
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   229
    ^ (secondsLow bitShift:16) bitOr:secondsLow
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   230
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   231
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   232
!AbsoluteTime methodsFor:'arithmetic'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   233
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   234
- aTime
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   235
    "return delta in seconds between 2 times/dates."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   236
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   237
    ^ self getSeconds - (aTime getSeconds)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   238
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   239
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   240
addTime:timeAmount
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   241
    "return a new Time/Date timeAmount seconds from myself"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   242
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   243
    ^ self class new setSeconds:(self getSeconds + timeAmount)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   244
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   245
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   246
subtractTime:timeAmount
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   247
    "return a new Time/Date timeAmount seconds before myself"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   248
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   249
    ^ self class new setSeconds:(self getSeconds - timeAmount)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   250
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   251
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   252
!AbsoluteTime methodsFor:'storing'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   253
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   254
storeString
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   255
    |string|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   256
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   257
    string := '(' , self class name , ' new setSecondsLow:'.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   258
    string := string , secondsLow storeString.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   259
    string := string , ' and:' , secondsHi storeString.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   260
    string := string , ')'.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   261
    ^ string
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   262
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   263
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   264
!AbsoluteTime methodsFor:'converting'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   265
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   266
asSeconds
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   267
    "return the number of seconds elapsed since whatever time the
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   268
     OperatingSystem bases its time upon. Since this is totally
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   269
     OS-dependent, do not use this method. (see Time>>asSeconds)"
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   270
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   271
    ^ (secondsHi * 16r10000) + secondsLow
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   272
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   273
    "
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   274
     AbsoluteTime asSeconds
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   275
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   276
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   277
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   278
asDate
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   279
    "return a Date object from the receiver"
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   280
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   281
    ^ Date fromOSTime:(Array with:secondsLow with:secondsHi) 
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   282
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   283
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   284
asTime
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   285
    ^ Time fromOSTime:(Array with:secondsLow with:secondsHi)
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   286
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   287
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   288
!AbsoluteTime methodsFor:'private'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   289
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   290
secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   291
    ^ secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   292
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   293
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   294
secondsHi
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   295
    ^ secondsHi
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   296
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   297
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   298
getSeconds
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   299
    ^ (secondsHi * 16r10000) + secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   300
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   301
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   302
setSeconds:secs
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   303
    secondsHi := secs // 16r10000.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   304
    secondsLow := secs \\ 16r10000
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   305
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   306
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   307
setSecondsLow:secsLow and:secsHi
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   308
    secondsHi := secsHi.
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   309
    secondsLow := secsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   310
! !