Time: safe way to go to next day?

Discussion in 'Ruby' started by Emmanuel Touzery, Oct 21, 2003.

  1. Hello,

    When i have a Time object, to get to next day i do: myTime += (60*60*24)
    Not very elegant, but it works and I didn't find a nicer way.
    well, i thought it worked...

    now we are going to change the time in europe...
    So it breaks my assumption...

    any proper way to fix it?

    emmanuel

    irb(main):008:0> now = Time.now
    Tue Oct 21 08:14:44 Central Europe Daylight Time 2003
    irb(main):009:0> todayMidnight = Time.local(now.year, now.month,
    now.day, 0,0,0)
    Tue Oct 21 00:00:00 Central Europe Daylight Time 2003 # today at 0:00

    irb(main):010:0> todayMidnight + (60*60*24)
    Wed Oct 22 00:00:00 Central Europe Daylight Time 2003 # tomorrow at 0:00

    [..]

    irb(main):014:0> todayMidnight + (60*60*24)*5
    Sun Oct 26 00:00:00 Central Europe Daylight Time 2003 # sun at 0:00
    irb(main):015:0> todayMidnight + (60*60*24)*6
    Sun Oct 26 23:00:00 Central Europe Standard Time 2003 # <----------
    !!!! sun at 23:00
     
    Emmanuel Touzery, Oct 21, 2003
    #1
    1. Advertising

  2. Emmanuel Touzery

    Guest

    Hi,

    At Tue, 21 Oct 2003 15:16:44 +0900,
    Emmanuel Touzery wrote:
    > When i have a Time object, to get to next day i do: myTime += (60*60*24)
    > Not very elegant, but it works and I didn't find a nicer way.
    > well, i thought it worked...
    >
    > now we are going to change the time in europe...
    > So it breaks my assumption...


    If you just want dates, what about date.rb?

    require 'date'
    today = Date.today
    today.to_s # => "2003-10-21"
    (today+5).to_s # => "2003-10-26"

    I've not tested it with DST though.

    --
    Nobu Nakada
     
    , Oct 21, 2003
    #2
    1. Advertising

  3. Hello,

    wrote:

    >If you just want dates, what about date.rb?
    >
    > require 'date'
    > today = Date.today
    > today.to_s # => "2003-10-21"
    > (today+5).to_s # => "2003-10-26"
    >
    >I've not tested it with DST though.
    >
    >
    >

    but where is all this stuff documented?
    find.rb, base64.rb, date.rb, the other day someone wanted to remove
    recursively a dir, and was given another one of those magic files...
    which doc did i miss? :O(

    otherwise, yes it's probably what i want. unfortunately i now sit on a
    lot of code to convert :O(
    if someone has a way with Time, it would simplify things for me...

    thanks,

    emmanuel
     
    Emmanuel Touzery, Oct 21, 2003
    #3
  4. Emmanuel Touzery <> wrote:

    > wrote:
    >
    > >If you just want dates, what about date.rb?
    > >
    > > require 'date'
    > > today = Date.today
    > > today.to_s # => "2003-10-21"
    > > (today+5).to_s # => "2003-10-26"
    > >
    > >I've not tested it with DST though.

    >
    > otherwise, yes it's probably what i want. unfortunately i now sit on a
    > lot of code to convert :O(
    > if someone has a way with Time, it would simplify things for me...


    Here's half a solution:

    class Time
    require 'date'
    DAY = 60*60*24

    alias add +
    def +(s)
    return add(s) unless s % DAY == 0
    d = Date.new(year, mon, day) + s / DAY
    Time.local(d.year, d.mon, d.day, hour, min, sec, usec)
    end
    end
     
    Sabby and Tabby, Oct 21, 2003
    #4
  5. il Tue, 21 Oct 2003 16:19:48 +0900, Emmanuel Touzery
    <> ha scritto::


    >but where is all this stuff documented?
    >find.rb, base64.rb, date.rb, the other day someone wanted to remove
    >recursively a dir, and was given another one of those magic files...
    >which doc did i miss? :O(
    >


    some is in the pickaxe.
    Some you may just found looking at ruby-dir/lib, for the classes like
    Array or String there is ri.

    You may like to look at rj (as in 'ri'.succ) wich works like ri but
    incorporates some more stuff (see on rubyforge).

    ruby-doc.org has ri++ wich is 'ri + documentation via web' . Quite
    useful too ;)
     
    gabriele renzi, Oct 21, 2003
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Deniz Bahar
    Replies:
    2
    Views:
    512
    Andrey Tarasevich
    Mar 9, 2005
  2. Replies:
    1
    Views:
    308
    Mike Wahler
    May 1, 2006
  3. Andy
    Replies:
    1
    Views:
    754
  4. Replies:
    2
    Views:
    300
  5. Rob Redmon

    Convert day of year to month, day

    Rob Redmon, Apr 4, 2008, in forum: Ruby
    Replies:
    7
    Views:
    332
    Alex Wayne
    Apr 4, 2008
Loading...

Share This Page