AbsTime.st
author claus
Wed, 08 Feb 1995 04:11:17 +0100
changeset 241 6f30be88e314
parent 213 3b56a17534fd
child 242 0190f298e56c
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
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    13
'From Smalltalk/X, Version:2.10.4 on 8-feb-1995 at 12:46:45 pm'!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    14
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    15
AbstractTime subclass:#AbsoluteTime
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    16
	 instanceVariableNames:'secondsLow secondsHi'
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    17
	 classVariableNames:''
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    18
	 poolDictionaries:''
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    19
	 category:'Magnitude-General'
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    20
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    21
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    22
AbsoluteTime comment:'
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    23
COPYRIGHT (c) 1989 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    24
	      All Rights Reserved
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    25
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    26
$Header: /cvs/stx/stx/libbasic/Attic/AbsTime.st,v 1.8 1995-02-08 03:10:47 claus Exp $
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    27
'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    28
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    29
!AbsoluteTime class methodsFor:'documentation'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    30
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    31
copyright
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    32
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    33
 COPYRIGHT (c) 1989 by Claus Gittinger
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
    34
	      All Rights Reserved
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    35
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    36
 This software is furnished under a license and may be used
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    37
 only in accordance with the terms of that license and with the
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    38
 inclusion of the above copyright notice.   This software may not
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    39
 be provided or otherwise made available to, or used by, any
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    40
 other person.  No title to or ownership of the software is
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    41
 hereby transferred.
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    42
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    43
!
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    44
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    45
version
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    46
"
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    47
$Header: /cvs/stx/stx/libbasic/Attic/AbsTime.st,v 1.8 1995-02-08 03:10:47 claus Exp $
82
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    48
"
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    49
!
0147b4f725ae *** empty log message ***
claus
parents: 77
diff changeset
    50
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    51
documentation
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    52
"
77
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    53
    This class represents time values in seconds from 1st. Jan 1970, as
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    54
    used in the Unix operating system. Its implementation is not the same
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    55
    as in ST-80 (which represents Time as seconds from 1. Jan 1901.
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    56
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    57
    Actually, the implementation does not depend or even know which time/date 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    58
    the OperatingSystem bases its time upon - it is simply keeping the value(s)
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    59
    as return from the OS.
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    60
    For conversion, these values are given back to the OS, which will know
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    61
    how to convert these times.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    62
    This has the advantage, that time-stamps on files (such as last-access-
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    63
    time or last-modifiaction-time) can be handled transparent to other
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    64
    times (especially comparison).
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    65
77
6c38ca59927f *** empty log message ***
claus
parents: 54
diff changeset
    66
    Since unix-times are 32 bit which does not fit into a SmallInteger, 
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    67
    we keep low and hi 16bits of the time separately (it could have been 
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    68
    implemented using LargeIntegers though).
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    69
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    70
    This class should not be confused with Time (which only represents the
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    71
    time within one day). Time instances cannot be used to compare times across
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    72
    midnight; instances of AbsoluteTime can.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    73
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
    74
    See Time for more details.
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    75
"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    76
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    77
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    78
!AbsoluteTime class methodsFor:'instance creation'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    79
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    80
day:d month:m year:y hour:h minutes:min seconds:s
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    81
    "return an instance of the receiver"
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    82
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    83
    ^ self fromOSTime:(OperatingSystem 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    84
                        computeTimePartsFromYear:y month:m day:d 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    85
                                            hour:h minute:min seconds:s)
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    86
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    87
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    88
     AbsoluteTime day:2 month:1 year:1991 hour:12 minutes:30 seconds:0 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    89
     AbsoluteTime day:8 month:1 year:1995 hour:0 minutes:43 seconds:48 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    90
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    91
! !
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    92
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    93
!AbsoluteTime methodsFor:'private'!
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    94
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    95
secondsLow
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    96
    ^ secondsLow
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    97
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
    98
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
    99
setSecondsLow:secsLow and:secsHi
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   100
    secondsHi := secsHi.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   101
    secondsLow := secsLow
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   102
!
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   103
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   104
fromOSTimeLow:secsLow and:secsHi
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   105
    secondsHi := secsHi.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   106
    secondsLow := secsLow
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   107
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   108
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   109
secondsHi
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   110
    ^ secondsHi
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   111
!
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   112
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   113
setSeconds:secs
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   114
    secondsHi := secs // 16r10000.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   115
    secondsLow := secs \\ 16r10000
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   116
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   117
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   118
getSeconds
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   119
    ^ (secondsHi * 16r10000) + secondsLow
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   120
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   121
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   122
fromOSTime:secs
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   123
    secondsHi := secs // 16r10000.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   124
    secondsLow := secs \\ 16r10000
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   125
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   126
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   127
!AbsoluteTime methodsFor:'accessing'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   128
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   129
hourInDay
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   130
    "return the hours (0..23)"
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   131
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   132
    ^ self hours
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   133
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   134
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   135
     AbsoluteTime now hours 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   136
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   137
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   138
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   139
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   140
minuteInDay
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   141
    "return the minute-part"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   142
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   143
    |m|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   144
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   145
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   146
        :hours :minutes :secs |
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   147
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   148
        m := minutes
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   149
    ].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   150
    ^ m
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   151
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   152
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   153
     AbsoluteTime now minuteInDay 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   154
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   155
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   156
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   157
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   158
secondInDay
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   159
    "return the second-part"
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   160
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   161
    |s|
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   162
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   163
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   164
        :hours :minutes :secs |
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   165
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   166
        s := secs
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   167
    ].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   168
    ^ s
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   169
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   170
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   171
     AbsoluteTime now secondInDay 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   172
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   173
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   174
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   175
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   176
day
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   177
    "return the day-in-month of the receiver (1..31).
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   178
     Obsolete; use instances of Date for this."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   179
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   180
    |d|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   181
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   182
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   183
                                   for:[:year :month :day |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   184
        d := day
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   185
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   186
    ^ d
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   187
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   188
    "
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   189
     AbsoluteTime now day 
92
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
month
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   194
    "return the month of the receiver (1..12).
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
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   197
    |m|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   198
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   199
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   200
                                   for:[:year :month :day |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   201
        m := month
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   202
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   203
    ^ m
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   204
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   205
    "
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   206
     AbsoluteTime now month
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   207
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   208
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   209
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   210
year
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   211
    "return the year of the receiver i.e. 1992.
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   212
     Obsolete; use instances of Date for this."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   213
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   214
    |y|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   215
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   216
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   217
                                   for:[:year :month :day |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   218
        y := year
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   219
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   220
    ^ y
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   221
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   222
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   223
     AbsoluteTime now year
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   224
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   225
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   226
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   227
hours
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   228
    "return the hours (0..23)"
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   229
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   230
    |hr|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   231
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   232
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   233
        :hours :minutes :secs |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   234
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   235
        hr := hours
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   236
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   237
    ^ hr
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   238
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   239
    "
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   240
     AbsoluteTime now hours 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   241
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   242
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   243
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   244
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   245
minutes
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   246
    "return the minutes (0..59)"
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   247
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   248
    |m|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   249
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   250
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   251
        :hours :minutes :secs |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   252
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   253
        m := minutes
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   254
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   255
    ^ m
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   256
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   257
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   258
     AbsoluteTime now minutes 
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   259
    "
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   260
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   261
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   262
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   263
seconds
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   264
    "return the seconds (0..59)"
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   265
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   266
    |s|
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   267
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   268
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   269
        :hours :minutes :secs |
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   270
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   271
        s := secs
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   272
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   273
    ^ s
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   274
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   275
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   276
     AbsoluteTime now seconds 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   277
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   278
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   279
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   280
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   281
!AbsoluteTime methodsFor:'comparing'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   282
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   283
> aTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   284
    secondsHi > aTime secondsHi ifTrue:[^ true].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   285
    secondsHi < aTime secondsHi ifTrue:[^ false].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   286
    ^ secondsLow > aTime secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   287
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   288
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   289
< aTime
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   290
    secondsHi < aTime secondsHi ifTrue:[^ true].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   291
    secondsHi > aTime secondsHi ifTrue:[^ false].
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   292
    ^ secondsLow < aTime secondsLow
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   293
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   294
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   295
= aTime
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   296
    (aTime species == self species) ifFalse:[^ false].
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   297
    ^ (secondsLow == aTime secondsLow) and:[secondsHi == aTime secondsHi]
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   298
!
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   299
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   300
hash
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   301
    "return an integer useful for hashing on times"
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   302
154
d4236ec280a6 *** empty log message ***
claus
parents: 92
diff changeset
   303
    ^ (secondsLow bitShift:16) bitOr:secondsLow
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   304
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   305
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   306
!AbsoluteTime methodsFor:'converting'!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   307
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   308
asSeconds
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   309
    "return the number of seconds elapsed since whatever time the
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   310
     OperatingSystem bases its time upon. Since this is totally
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   311
     OS-dependent, do not interpret the value returned by this method.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   312
     You can use it to add/subtract seconds or get time deltas, though."
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   313
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   314
    ^ (secondsHi * 16r10000) + secondsLow
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   315
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   316
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   317
     AbsoluteTime now asSeconds
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   318
     AbsoluteTime fromSeconds:(AbsoluteTime now asSeconds + 3600) 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   319
     Time hour:23 minutes:33 seconds:0         
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   320
     Time fromSeconds:((Time hour:23 minutes:33 seconds:0) asSeconds + 3600) 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   321
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   322
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   323
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   324
asDate
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   325
    "return a Date object from the receiver"
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   326
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   327
    ^ Date fromOSTime:(Array with:secondsLow with:secondsHi) 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   328
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   329
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   330
     AbsoluteTime now  
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   331
     AbsoluteTime now asDate
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   332
     (AbsoluteTime now addTime:3600) asDate 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   333
     (AbsoluteTime now addTime:3600) asTime 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   334
     AbsoluteTime fromSeconds:(AbsoluteTime now asSeconds + 3600) 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   335
     (AbsoluteTime fromSeconds:(AbsoluteTime now asSeconds + 3600)) asDate  
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   336
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   337
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   338
!
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   339
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   340
asTime
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   341
    ^ Time fromOSTime:(Array with:secondsLow with:secondsHi)
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   342
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   343
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   344
     AbsoluteTime now  
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   345
     AbsoluteTime now asTime
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   346
     (AbsoluteTime now addTime:3600) asTime 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   347
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   348
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   349
! !
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   350
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   351
!AbsoluteTime methodsFor:'arithmetic'!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   352
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   353
- aTime
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   354
    "return delta in seconds between 2 times/dates."
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   355
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   356
    ^ self getSeconds - (aTime getSeconds)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   357
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   358
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   359
addTime:timeAmount
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   360
    "return a new instance of myself, timeAmount seconds afterwards"
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   361
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   362
    ^ self class new setSeconds:(self getSeconds + timeAmount)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   363
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   364
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   365
subtractTime:timeAmount
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   366
    "return a new instance opf myself, timeAmount seconds before myself"
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   367
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   368
    ^ self class new setSeconds:(self getSeconds - timeAmount)
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   369
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   370
213
3b56a17534fd *** empty log message ***
claus
parents: 154
diff changeset
   371
!AbsoluteTime methodsFor:'printing & storing'!
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   372
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   373
printOn:aStream
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   374
    |h min s d m y|
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   375
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   376
    OperatingSystem computeDatePartsOf:secondsLow and:secondsHi for:[
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   377
        :year :month :day | d := day. m := month. y := year.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   378
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   379
    OperatingSystem computeTimePartsOf:secondsLow and:secondsHi for:[
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   380
        :hours :minutes :secs | h := hours. min := minutes. s := secs.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   381
    ].
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   382
    d printOn:aStream.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   383
    aStream nextPut:$-.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   384
    m printOn:aStream.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   385
    aStream nextPut:$-.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   386
    y printOn:aStream.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   387
    aStream space.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   388
    h printOn:aStream leftPaddedTo:2 with:$0. 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   389
    aStream nextPut:$:.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   390
    min printOn:aStream leftPaddedTo:2 with:$0.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   391
    aStream nextPut:$:.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   392
    s printOn:aStream leftPaddedTo:2 with:$0.
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   393
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   394
    "
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   395
     AbsoluteTime now 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   396
     AbsoluteTime fromSeconds:0 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   397
     Time now            
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   398
     Date today         
92
0c73b48551ac *** empty log message ***
claus
parents: 82
diff changeset
   399
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   400
!
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   401
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   402
storeOn:aStream
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   403
    aStream nextPut:$(; 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   404
            nextPutAll:self class name; 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   405
            nextPutAll:' new setSecondsLow:'.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   406
    secondsLow storeOn:aStream.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   407
    aStream nextPutAll:' and:'.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   408
    secondsHi storeOn:aStream.
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   409
    aStream nextPut:$).
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 30
diff changeset
   410
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   411
    "
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   412
     AbsoluteTime now storeString '(AbsoluteTime new setSecondsLow:39757 and:12087)'
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   413
241
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   414
     AbsoluteTime readFromString:(AbsoluteTime now storeString) 
6f30be88e314 *** empty log message ***
claus
parents: 213
diff changeset
   415
    "
30
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   416
! !
c5f5604e0c0a Initial revision
claus
parents:
diff changeset
   417