Run any of these examples and notice the difference.
- Code: Select all
A1) DateAndTime abtXmlFromString: '1994-11-05T08:15:30-05:00'.
A2) DateAndTime abtXmlFromTimeString: '08:15:30-05:00'
B1) DateAndTime abtXmlFromString: '1994-11-05T13:15:30Z'.
B2) DateAndTime abtXmlFromTimeString: '13:15:30Z'.
C1) DateAndTime abtXmlFromString: '1994-11-05T13:15:30.123Z'.
C2) DateAndTime abtXmlFromTimeString: '13:15:30.123Z'.
The original code in abtXmlFromTimeString: results in the data stream being one position too far ahead.
- Code: Select all
sec := ( data abrUpToAny: #( $+ $- $. )) abtAsInteger.
The code in abtXmlFromString: uses a different method to parse the seconds:
- Code: Select all
sec := (data next:2) abtAsInteger.
So it's fixable in 2 ways:
A) replace the original code with:
- Code: Select all
sec := (data next:2) abtAsInteger.
B)Or insert
- Code: Select all
data skip: -1.
- Code: Select all
mSec := self abtXmlMillisecondsFrom: data. :