--- a/RegressionTests__TimeAndDateTest.st Fri Nov 07 00:03:55 2014 +0100
+++ b/RegressionTests__TimeAndDateTest.st Fri Nov 07 20:13:15 2014 +0100
@@ -251,72 +251,155 @@
!
test_07_readingISO8601
+ "tests reading into a 'natural' timestamp - that is if there was a TZ info,
+ that will be printed. If not, it will remain a local timestamp.
+ Presenting timestamps this way is not usually a good idea, except for GUI
+ (but not for data exchange)"
+
{
{ '1995-02-20T13:11:06.123' . '1995-02-20 13:11:06.123' } .
- { '1995-02-20T13:11:06' . '1995-02-20 13:11:06.000' } .
- { '1995-02T13:11:06' . '1995-02-01 13:11:06.000' } .
- { '1995T13:11:06' . '1995-01-01 13:11:06.000' } .
- { '1995T13:11' . '1995-01-01 13:11:00.000' } .
- { '1995T13:11.5' . '1995-01-01 13:11:30.000' } .
- { '1995T13:11,5' . '1995-01-01 13:11:30.000' } .
- { '1995T13' . '1995-01-01 13:00:00.000' } .
- { '1995T13.25' . '1995-01-01 13:15:00.000' } .
+ { '1995-02-20T13:11:06' . '1995-02-20 13:11:06' } .
+ { '1995-02T13:11:06' . '1995-02-01 13:11:06' } .
+ { '1995T13:11:06' . '1995-01-01 13:11:06' } .
+ { '1995T13:11' . '1995-01-01 13:11' } .
+ { '1995T13:11.5' . '1995-01-01 13:11:30' } .
+ { '1995T13:11,5' . '1995-01-01 13:11:30' } .
+ { '1995T13' . '1995-01-01 13:00' } .
+ { '1995T13.25' . '1995-01-01 13:15' } .
{ '1995T13.333333' . '1995-01-01 13:19:59.999' } .
- { '1995' . '1995-01-01 00:00:00.000' } .
- { '1995-02' . '1995-02-01 00:00:00.000' } .
- { '19950204' . '1995-02-04 00:00:00.000' } .
+ { '1995' . '1995-01-01 00:00' } .
+ { '1995-02' . '1995-02-01 00:00' } .
+ { '19950204' . '1995-02-04 00:00' } .
"/ day in year
- { '1995-001' . '1995-01-01 00:00:00.000' } .
- { '1995-035' . '1995-02-04 00:00:00.000' } .
- { '1995035' . '1995-02-04 00:00:00.000' } .
+ { '1995-001' . '1995-01-01 00:00' } .
+ { '1995-035' . '1995-02-04 00:00' } .
+ { '1995035' . '1995-02-04 00:00' } .
- { '1997-01-01' . '1997-01-01 00:00:00.000' } .
+ { '1997-01-01' . '1997-01-01 00:00' } .
"/ week and weekday
- { '1997-W01' . '1996-12-30 00:00:00.000' } .
- { '1997W01' . '1996-12-30 00:00:00.000' } .
- { '1997W01-1' . '1996-12-30 00:00:00.000' } .
- { '1997W011' . '1996-12-30 00:00:00.000' } .
- { '1997W01' . '1996-12-30 00:00:00.000' } .
- { '1997W01-2' . '1996-12-31 00:00:00.000' } .
- { '1997-W01-2' . '1996-12-31 00:00:00.000' } .
- { '1997W012' . '1996-12-31 00:00:00.000' } .
- { '2014W40' . '2014-09-29 00:00:00.000' } .
- { '2014W44-4' . '2014-10-30 00:00:00.000' } .
- { '2014W01' . '2013-12-30 00:00:00.000' } .
- { '2014W01-1' . '2013-12-30 00:00:00.000' } .
- { '2014W01-2' . '2013-12-31 00:00:00.000' } .
- { '2014W01-3' . '2014-01-01 00:00:00.000' } .
+ { '1997-W01' . '1996-12-30 00:00' } .
+ { '1997W01' . '1996-12-30 00:00' } .
+ { '1997W01-1' . '1996-12-30 00:00' } .
+ { '1997W011' . '1996-12-30 00:00' } .
+ { '1997W01' . '1996-12-30 00:00' } .
+ { '1997W01-2' . '1996-12-31 00:00' } .
+ { '1997-W01-2' . '1996-12-31 00:00' } .
+ { '1997W012' . '1996-12-31 00:00' } .
+ { '2014W40' . '2014-09-29 00:00' } .
+ { '2014W44-4' . '2014-10-30 00:00' } .
+ { '2014W01' . '2013-12-30 00:00' } .
+ { '2014W01-1' . '2013-12-30 00:00' } .
+ { '2014W01-2' . '2013-12-31 00:00' } .
+ { '2014W01-3' . '2014-01-01 00:00' } .
- { '1995-02-20 13:11' . '1995-02-20 13:11:00.000' } .
- { '1995-02-20 1311' . '1995-02-20 13:11:00.000' } .
- { '1995-02-20 13' . '1995-02-20 13:00:00.000' } .
- { '1995-02-20 235959' . '1995-02-20 23:59:59.000' } .
- { '19950220 235959' . '1995-02-20 23:59:59.000' } .
+ { '1995-02-20 13:11' . '1995-02-20 13:11' } .
+ { '1995-02-20 1311' . '1995-02-20 13:11' } .
+ { '1995-02-20 13' . '1995-02-20 13:00' } .
+ { '1995-02-20 235959' . '1995-02-20 23:59:59' } .
+ { '19950220 235959' . '1995-02-20 23:59:59' } .
{ '19950220 23:59:59.9942' . '1995-02-20 23:59:59.994' } .
{ '19950220 235959.9942' . '1995-02-20 23:59:59.994' } .
"/ local vs. UTC
- { '1995-02-20 13:11:06' . '1995-02-20 13:11:06.000' } .
- { '1995-02-20 13:11:06Z' . '1995-02-20 13:11:06.000' } .
- { '1995-02-20 13:11:06+01' . '1995-02-20 12:11:06.000' } .
- { '1995-02-20 13:11:06+01:00' . '1995-02-20 12:11:06.000' } .
- { '1995-02-20 13:11:06+01:30' . '1995-02-20 11:41:06.000' } .
- { '1995-02-20 13:11:06+0130' . '1995-02-20 11:41:06.000' } .
- { '1995-02-20 13:11:06-01' . '1995-02-20 14:11:06.000' } .
- { '1995-02-20 13:11:06-01:00' . '1995-02-20 14:11:06.000' } .
- { '1995-02-20 13:11:06-01:30' . '1995-02-20 14:41:06.000' } .
- { '1995-02-20 13:11:06-0130' . '1995-02-20 14:41:06.000' } .
+ { '1995-02-20 13:11:06' . '1995-02-20 13:11:06' } .
+ { '1995-02-20 13:11:06Z' . '1995-02-20 13:11:06Z' } .
+ { '1995-02-20 13:11:06+01' . '1995-02-20 13:11:06+01' } .
+ { '1995-02-20 13:11:06+01:00' . '1995-02-20 13:11:06+01' } .
+ { '1995-02-20 13:11:06+01:30' . '1995-02-20 13:11:06+01:30' } .
+ { '1995-02-20 13:11:06+0130' . '1995-02-20 13:11:06+01:30' } .
+ { '1995-02-20 13:11:06-01' . '1995-02-20 13:11:06-01' } .
+ { '1995-02-20 13:11:06-01:00' . '1995-02-20 13:11:06-01' } .
+ { '1995-02-20 13:11:06-01:30' . '1995-02-20 13:11:06-01:30' } .
+ { '1995-02-20 13:11:06-0130' . '1995-02-20 13:11:06-01:30' } .
"/ 24 is allowed with ISO, and is 00:00 of the next day:
- { '1995-02-20 24:00:00' . '1995-02-21 00:00:00.000' } .
+ { '1995-02-20 24:00:00' . '1995-02-21 00:00' } .
} do:[:eachPair |
- |s1 d s|
+ |s1 t expected got|
s1 := eachPair first.
- d := UtcTimestamp readIso8601FormatFrom:s1.
- s := eachPair second.
- self assert:(d asString = s) description:'expected: ',s,' got:',d printString.
+ t := Timestamp readIso8601FormatFrom:s1.
+ expected := eachPair second.
+ got := t asString.
+ self assert:(got = expected) description:'expected: ',expected,' got:',got.
+ ].
+
+ "
+ self new test_07_readingISO8601
+ "
+!
+
+test_07b_readingISO8601UTC
+ "tests reading into an utc timestamp"
+
+ {
+ { '1995-02-20T13:11:06.123' . '1995-02-20 13:11:06.123Z' } .
+ { '1995-02-20T13:11:06' . '1995-02-20 13:11:06Z' } .
+ { '1995-02T13:11:06' . '1995-02-01 13:11:06Z' } .
+ { '1995T13:11:06' . '1995-01-01 13:11:06Z' } .
+ { '1995T13:11' . '1995-01-01 13:11Z' } .
+ { '1995T13:11.5' . '1995-01-01 13:11:30Z' } .
+ { '1995T13:11,5' . '1995-01-01 13:11:30Z' } .
+ { '1995T13' . '1995-01-01 13:00Z' } .
+ { '1995T13.25' . '1995-01-01 13:15Z' } .
+ { '1995T13.333333' . '1995-01-01 13:19:59.999Z' } .
+ { '1995' . '1995-01-01 00:00Z' } .
+ { '1995-02' . '1995-02-01 00:00Z' } .
+ { '19950204' . '1995-02-04 00:00Z' } .
+
+ "/ day in year
+ { '1995-001' . '1995-01-01 00:00Z' } .
+ { '1995-035' . '1995-02-04 00:00Z' } .
+ { '1995035' . '1995-02-04 00:00Z' } .
+
+ { '1997-01-01' . '1997-01-01 00:00Z' } .
+ "/ week and weekday
+ { '1997-W01' . '1996-12-30 00:00Z' } .
+ { '1997W01' . '1996-12-30 00:00Z' } .
+ { '1997W01-1' . '1996-12-30 00:00Z' } .
+ { '1997W011' . '1996-12-30 00:00Z' } .
+ { '1997W01' . '1996-12-30 00:00Z' } .
+ { '1997W01-2' . '1996-12-31 00:00Z' } .
+ { '1997-W01-2' . '1996-12-31 00:00Z' } .
+ { '1997W012' . '1996-12-31 00:00Z' } .
+ { '2014W40' . '2014-09-29 00:00Z' } .
+ { '2014W44-4' . '2014-10-30 00:00Z' } .
+ { '2014W01' . '2013-12-30 00:00Z' } .
+ { '2014W01-1' . '2013-12-30 00:00Z' } .
+ { '2014W01-2' . '2013-12-31 00:00Z' } .
+ { '2014W01-3' . '2014-01-01 00:00Z' } .
+
+ { '1995-02-20 13:11' . '1995-02-20 13:11Z' } .
+ { '1995-02-20 1311' . '1995-02-20 13:11Z' } .
+ { '1995-02-20 13' . '1995-02-20 13:00Z' } .
+ { '1995-02-20 235959' . '1995-02-20 23:59:59Z' } .
+ { '19950220 235959' . '1995-02-20 23:59:59Z' } .
+ { '19950220 23:59:59.9942' . '1995-02-20 23:59:59.994Z' } .
+ { '19950220 235959.9942' . '1995-02-20 23:59:59.994Z' } .
+
+ "/ local vs. UTC
+ { '1995-02-20 13:11:06' . '1995-02-20 13:11:06Z' } .
+ { '1995-02-20 13:11:06Z' . '1995-02-20 13:11:06Z' } .
+ { '1995-02-20 13:11:06+01' . '1995-02-20 12:11:06Z' } . "/ notice the changed time here!!!!!!
+ { '1995-02-20 13:11:06+01:00' . '1995-02-20 12:11:06Z' } . "/ notice the changed time here!!!!!!
+ { '1995-02-20 13:11:06+01:30' . '1995-02-20 11:41:06Z' } . "/ notice the changed time here!!!!!!
+ { '1995-02-20 13:11:06+0130' . '1995-02-20 11:41:06Z' } . "/ notice the changed time here!!!!!!
+ { '1995-02-20 13:11:06-01' . '1995-02-20 14:11:06Z' } .
+ { '1995-02-20 13:11:06-01:00' . '1995-02-20 14:11:06Z' } .
+ { '1995-02-20 13:11:06-01:30' . '1995-02-20 14:41:06Z' } .
+ { '1995-02-20 13:11:06-0130' . '1995-02-20 14:41:06Z' } .
+
+ "/ 24 is allowed with ISO, and is 00:00 of the next day:
+ { '1995-02-20 24:00:00' . '1995-02-21 00:00Z' } .
+ } do:[:eachPair |
+ |s1 t expected got|
+
+ s1 := eachPair first.
+ t := UtcTimestamp readIso8601FormatFrom:s1.
+ expected := eachPair second.
+ got := t asString.
+ self assert:(got = expected) description:'expected: ',expected,' got:',got.
].
"