UtcTimestamp.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18457 214d760f8247
child 23547 c69c97cec351
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18452
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
     1
"{ Encoding: utf8 }"
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
     2
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2011 by eXept Software AG
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
 hereby transferred.
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
18452
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
    16
"{ NameSpace: Smalltalk }"
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
    17
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
Timestamp subclass:#UtcTimestamp
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
	category:'Magnitude-Time'
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
!UtcTimestamp class methodsFor:'documentation'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    26
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
copyright
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2011 by eXept Software AG
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
 hereby transferred.
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
documentation
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
    This is a Timestamp, that represents itself as UTC.
13231
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    45
    Internally it stores exactly the same value as Timestamp, 
15828
1564a3c784fa class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 13794
diff changeset
    46
    so the following expression is always true:
13231
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    47
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    48
        someTimestamp asUtcTimestamp = someTimestamp asLocalTimestamp
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    49
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    50
    But when printing, accessing hour, minute, ... and converting to Date and Time,
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    51
    it returns the values represented in the UTC zone instead of the local timezone.
17130
de560263e67f class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17051
diff changeset
    52
    Be aware that this may lead to interesting results; for example when converting a timestamp
de560263e67f class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17051
diff changeset
    53
    to a date, you may get a different date from an UTCTimestamp and a local timestamp.
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
    [author:]
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
        Stefan Vogel (stefan@zwerg.nil.exept.de)
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    57
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    58
    [instance variables:]
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    59
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    60
    [class variables:]
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    61
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    62
    [see also:]
13231
e222e6c577ff changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 13227
diff changeset
    63
        Time Date
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    64
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    65
"
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    66
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    67
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
!UtcTimestamp methodsFor:'accessing'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
timeInfo
16979
a793015c75f4 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16969
diff changeset
    71
    ^ self utcTimeInfo
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
timeZoneName
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
    75
    ^ 'UTC'
16969
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
    76
!
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
    77
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
    78
utcOffset
18452
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
    79
    "I am an UTC timestamp, so there is no offset"
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
    80
    
16969
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
    81
    ^ 0
17032
e2c097d59814 class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 17028
diff changeset
    82
!
e2c097d59814 class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 17028
diff changeset
    83
e2c097d59814 class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 17028
diff changeset
    84
utcOffsetWithoutDst
e2c097d59814 class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 17028
diff changeset
    85
    ^ 0
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
!UtcTimestamp methodsFor:'converting'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
asLocalTimestamp
13232
23a5fb2c645f comment/format in: #asUtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 13231
diff changeset
    91
    "represent myself as a timestamp in the local timezone"
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
    ^ Timestamp fromOSTime:osTime
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
asUtcTimestamp
13232
23a5fb2c645f comment/format in: #asUtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 13231
diff changeset
    97
    "I am an UtcTimestamp"
23a5fb2c645f comment/format in: #asUtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 13231
diff changeset
    98
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
    ^ self
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
!UtcTimestamp methodsFor:'initialization'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
16931
c62ad93254c2 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16715
diff changeset
   104
setOSTimeFromYear:y month:m day:d hour:h minute:min second:s millisecond:millis 
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   105
    "private: ask the operating system to compute the internal osTime (based on the epoch),
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   106
     given y,m,d and h,m,s in utc time"
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   107
16997
f0867a7f248b class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16987
diff changeset
   108
   self setOSTimeFromUTCYear:y month:m day:d hour:h minute:min second:s millisecond:millis
13794
600bc500741b changed: #year:month:day:hour:minute:second:millisecond:
Claus Gittinger <cg@exept.de>
parents: 13232
diff changeset
   109
600bc500741b changed: #year:month:day:hour:minute:second:millisecond:
Claus Gittinger <cg@exept.de>
parents: 13232
diff changeset
   110
    "
16997
f0867a7f248b class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16987
diff changeset
   111
     UtcTimestamp now            
f0867a7f248b class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16987
diff changeset
   112
     Timestamp now              
f0867a7f248b class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16987
diff changeset
   113
     Timestamp now asTZTimestamp             
f0867a7f248b class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16987
diff changeset
   114
     Timestamp now asUtcTimestamp  
13794
600bc500741b changed: #year:month:day:hour:minute:second:millisecond:
Claus Gittinger <cg@exept.de>
parents: 13232
diff changeset
   115
    "
600bc500741b changed: #year:month:day:hour:minute:second:millisecond:
Claus Gittinger <cg@exept.de>
parents: 13232
diff changeset
   116
600bc500741b changed: #year:month:day:hour:minute:second:millisecond:
Claus Gittinger <cg@exept.de>
parents: 13232
diff changeset
   117
    "Modified (comment): / 13-10-2011 / 22:05:41 / cg"
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   119
17051
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   120
!UtcTimestamp methodsFor:'private'!
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   121
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   122
storeStringClass
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   123
    ^ Timestamp
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   124
! !
060104d927c0 class: UtcTimestamp
ca
parents: 17032
diff changeset
   125
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
!UtcTimestamp methodsFor:'testing'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
16969
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
   128
isLocalTimestamp
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   129
    "return true, if I am a local timestamp"
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   130
16969
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
   131
    ^ false
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
   132
!
e5da107ac771 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16931
diff changeset
   133
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
isUtcTimestamp
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   135
    "return true, if I am a utc timestamp"
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   136
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
    ^ true
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
!UtcTimestamp methodsFor:'visiting'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   141
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   142
acceptVisitor:aVisitor with:aParameter
16715
5528600b6497 comment/format only
Claus Gittinger <cg@exept.de>
parents: 15828
diff changeset
   143
    "dispatch for visitor pattern; send #visitUtcTimestamp:with: to aVisitor."
5528600b6497 comment/format only
Claus Gittinger <cg@exept.de>
parents: 15828
diff changeset
   144
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
    ^ aVisitor visitUtcTimestamp:self with:aParameter
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
! !
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
!UtcTimestamp class methodsFor:'documentation'!
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   149
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   150
version
18452
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
   151
    ^ '$Header: /cvs/stx/stx/libbasic/UtcTimestamp.st,v 1.16 2015-06-06 12:42:18 cg Exp $'
16987
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   152
!
1c3e57adcf34 class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 16979
diff changeset
   153
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   154
version_CVS
18452
5724547da8de class: UtcTimestamp
Claus Gittinger <cg@exept.de>
parents: 17130
diff changeset
   155
    ^ '$Header: /cvs/stx/stx/libbasic/UtcTimestamp.st,v 1.16 2015-06-06 12:42:18 cg Exp $'
13227
0dac835b156e initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   156
! !
15828
1564a3c784fa class: UtcTimestamp
Stefan Vogel <sv@exept.de>
parents: 13794
diff changeset
   157