Time: safe way to go to next day?

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 + (606024)
Wed Oct 22 00:00:00 Central Europe Daylight Time 2003 # tomorrow at 0:00

[…]

irb(main):014:0> todayMidnight + (606024)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

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

Hello,

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

···

nobu.nokada@softhome.net wrote:

Quoting Emmanuel Touzery emmanuel.touzery@wanadoo.fr:

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…

If you need just the date part you may probably ignore timezone as well. Use
UTC:
irb(main):027:0> ary = Time.now
=> Tue Oct 21 09:45:14 Central Europe Daylight Time 2003
irb(main):028:0> t = Time.gm(*ary)
=> Tue Oct 21 09:45:14 UTC 2003
irb(main):029:0> t += 7 * 86400
=> Tue Oct 28 09:45:14 UTC 2003
irb(main):030:0>

Regards,

Dalibor Sramek

···


Dalibor Sramek insula.cz | In the eyes of cats,
dalibor.sramek@insula.cz | all things belong to cats.