I need to check some file dates against the budgetary periods of our company, to determine where those files get placed. I'm playing with the Time.local object. I've proven that I can denote which budget period I'm in by using the .between? method. But, I get this weird "octal digit" error with some of my date entries. irb(main):001:0> t = Time.local(2007,09,09,00,00) SyntaxError: compile error (irb):1: Illegal octal digit t = Time.local(2007,09,09,00,00) ^ (irb):1: Illegal octal digit t = Time.local(2007,09,09,00,00) ^ I don't get the error when I specify the following date. It doesn't seem to like the month of September. (-; irb(main):005:0> t = Time.local(2007,01,01,00,00) => Mon Jan 01 00:00:00 -0500 2007 Thanks, Peter

on 2007-02-02 18:58

on 2007-02-02 19:22

On Feb 2, 2007, at 09:58, Peter Bailey wrote: > (irb):1: Illegal octal digit > t = Time.local(2007,09,09,00,00) > ^ > (irb):1: Illegal octal digit > t = Time.local(2007,09,09,00,00) > ^ > > I don't get the error when I specify the following date. It doesn't > seem > to like the month of September. (-; If you put a 0 in front of a number you are specifying an octal number instead of a decimal number. Octal is base 8, so there is no such thing as an octal number including a digit greater than 7: t = Time.local 2007, 011, 011, 00, 00 Instead just use base 10: Time.local 2007, 9, 9, 0, 0

on 2007-02-02 19:24

On Feb 2, 2007, at 12:58 PM, Peter Bailey wrote: > (irb):1: Illegal octal digit > irb(main):005:0> t = Time.local(2007,01,01,00,00) > => Mon Jan 01 00:00:00 -0500 2007 In Ruby starting an integer with a leading zero designates that it is in octal notation. The non-negative octal integers start 00, 01, ..., 07, 010, 011, .... There is no 09. Bottom line: drop the leading zeros. Regards, Morton

on 2007-02-02 19:25

On Sat, Feb 03, 2007 at 02:58:59AM +0900, Peter Bailey wrote: > I need to check some file dates against the budgetary periods of our > company, to determine where those files get placed. I'm playing with the > Time.local object. I've proven that I can denote which budget period I'm > in by using the .between? method. But, I get this weird "octal digit" > error with some of my date entries. > > irb(main):001:0> t = Time.local(2007,09,09,00,00) > SyntaxError: compile error > (irb):1: Illegal octal digit > t = Time.local(2007,09,09,00,00) Numeric literals starting with `0' are interpreted as octal numbers. Try dropping the leading `0''s. > ^ > (irb):1: Illegal octal digit > t = Time.local(2007,09,09,00,00) > ^ > > I don't get the error when I specify the following date. It doesn't seem > to like the month of September. (-; > > irb(main):005:0> t = Time.local(2007,01,01,00,00) > => Mon Jan 01 00:00:00 -0500 2007 That's because there is no `9' in the base-8 number system, just like there is no `A' in the regular base-10 number system (but there is in the base-16 system a.k.a. hexadecimal). Hth,

on 2007-02-02 19:27

On Feb 2, 6:58 pm, Peter Bailey <pbai...@bna.com> wrote: > ^ > (irb):1: Illegal octal digit > t = Time.local(2007,09,09,00,00) > ^ The problem is the leading zero. Time.local(2007, 9, 9, 0, 0) works fine. Number literals with a zero at the beginning are interpreted as octal numbers. Since octal numbers only use digits 0..7, 9 is rejected (as would be 8). HTH, AdSR

on 2007-02-02 20:46

AdSR wrote: > On Feb 2, 6:58 pm, Peter Bailey <pbai...@bna.com> wrote: >> ^ >> (irb):1: Illegal octal digit >> t = Time.local(2007,09,09,00,00) >> ^ > > The problem is the leading zero. Time.local(2007, 9, 9, 0, 0) works > fine. > > Number literals with a zero at the beginning are interpreted as octal > numbers. Since octal numbers only use digits 0..7, 9 is rejected (as > would be 8). > > HTH, > AdSR You're all brilliant. Thanks. Yes, when I re-looked into my book that was guiding me with this, I see that all of their sample don't have a leading zero. -Peter