calendar.format: Fix timestamp parsing when there is no timezone. Fixes #861.
parent
f1b21b1827
commit
9f28391e6b
|
@ -83,3 +83,14 @@ IN: calendar.format.tests
|
||||||
|
|
||||||
[ ]
|
[ ]
|
||||||
[ { 2008 2009 } [ year. ] each ] unit-test
|
[ { 2008 2009 } [ year. ] each ] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
T{ timestamp
|
||||||
|
{ year 2013 }
|
||||||
|
{ month 4 }
|
||||||
|
{ day 23 }
|
||||||
|
{ hour 13 }
|
||||||
|
{ minute 50 }
|
||||||
|
{ second 24 }
|
||||||
|
}
|
||||||
|
] [ "2013-04-23T13:50:24" rfc3339>timestamp ] unit-test
|
||||||
|
|
|
@ -146,13 +146,17 @@ M: timestamp year. ( timestamp -- )
|
||||||
{ { CHAR: + [ 1 ] } { CHAR: - [ -1 ] } } case time* ;
|
{ { CHAR: + [ 1 ] } { CHAR: - [ -1 ] } } case time* ;
|
||||||
|
|
||||||
: read-rfc3339-gmt-offset ( ch -- dt )
|
: read-rfc3339-gmt-offset ( ch -- dt )
|
||||||
dup CHAR: Z = [ drop instant ] [
|
{
|
||||||
[
|
{ f [ instant ] }
|
||||||
read-00 hours
|
{ CHAR: Z [ instant ] }
|
||||||
read1 { { CHAR: : [ read-00 ] } { f [ 0 ] } } case minutes
|
[
|
||||||
time+
|
[
|
||||||
] dip signed-gmt-offset
|
read-00 hours
|
||||||
] if ;
|
read1 { { CHAR: : [ read-00 ] } { f [ 0 ] } } case minutes
|
||||||
|
time+
|
||||||
|
] dip signed-gmt-offset
|
||||||
|
]
|
||||||
|
} case ;
|
||||||
|
|
||||||
: read-ymd ( -- y m d )
|
: read-ymd ( -- y m d )
|
||||||
read-0000 "-" expect read-00 "-" expect read-00 ;
|
read-0000 "-" expect read-00 "-" expect read-00 ;
|
||||||
|
|
Loading…
Reference in New Issue