no problem we were not criticizing your fix more the problem in general Would be nice to have a guessFrom: Stef On Jan 16, 2010, at 12:07 PM, David Hotham wrote:
Hello,
The motivation behind this fix is that I am parsing historical stock data obtained from Google, in which dates are provided like this: "15-Jan-10". Of course I want this to read as 2010, not 1910.
I agree that the existing solution (with or without my tweak) looks ugly.
I gave brief consideration to a bigger fix which first checked what the current year was and then calculated what century to add to a low date. But, frankly, I couldn't be bothered. I figure that a one-character fix that is good for ten years isn't too bad.
I am quite content to defer to others as to what the right solution is here. So long as there ends up being a convenient way to read two-digit years correctly, I'll be happy.
David
"Stéphane Ducasse" <stephane.ducasse@inria.fr> wrote in message news:78E0F3D1-D169-43D9-B12E-6C9D4E2860C5@inria.fr...
hi guys
can one of you give a look at the this fix because I'm confused. Kernel-DavidHotham.538
year < 20 ifTrue: [year := 2000 + year] was year < 10 ifTrue: [year := 2000 + year]
both solutions look strange to me.
http://code.google.com/p/pharo/issues/detail?id=1749
readFrom: aStream "Read a Date from the stream in any of the forms: <day> <monthName> <year> (5 April 1982; 5-APR-82) <monthName> <day> <year> (April 5, 1982) <monthNumber> <day> <year> (4/5/82) <day><monthName><year> (5APR82)" | day month year | aStream peek isDigit ifTrue: [day := Integer readFrom: aStream]. [aStream peek isAlphaNumeric] whileFalse: [aStream skip: 1]. aStream peek isLetter ifTrue: ["number/name... or name..." month := (String new: 10) writeStream. [aStream peek isLetter] whileTrue: [month nextPut: aStream next]. month := month contents. day isNil ifTrue: ["name/number..." [aStream peek isAlphaNumeric] whileFalse: [aStream skip: 1]. day := Integer readFrom: aStream]] ifFalse: ["number/number..." month := Month nameOfMonth: day. day := Integer readFrom: aStream]. [aStream peek isAlphaNumeric] whileFalse: [aStream skip: 1]. year := Integer readFrom: aStream.
year < 20 ifTrue: [year := 2000 + year] ifFalse: [ year < 1900 ifTrue: [ year := 1900 + year]].
^ self year: year month: month day: day
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project