[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

What's up with Time.local ?

Peter Bailey

2/2/2007 5:59:00 PM

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

--
Posted via http://www.ruby-....

5 Answers

Eric Hodel

2/2/2007 6:21:00 PM

0

On Feb 2, 2007, at 09:58, 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)
> ^
> (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

Morton Goldberg

2/2/2007 6:23:00 PM

0

On Feb 2, 2007, at 12:58 PM, 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)
> ^
> (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

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



Jos Backus

2/2/2007 6:23:00 PM

0

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,
--
Jos Backus
jos at catnook.com

AdSR

2/2/2007 6:24:00 PM

0

On Feb 2, 6:58 pm, Peter Bailey <pbai...@bna.com> 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)
> ^
> (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

>
> 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
>
> --
> Posted viahttp://www.ruby-....


Peter Bailey

2/2/2007 7:47:00 PM

0

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

--
Posted via http://www.ruby-....