[#408634] How do I make lots of classes aware of each other? — "Andrew S." <lists@...>

I'm apparently missing something fundamental in my knowledge of classes

10 messages 2013/07/02

[#408712] Ruby web service with REST support — "Shubhada S." <lists@...>

Hi All,

17 messages 2013/07/05

[#408812] create variables depending on counter — stefan heinrich <lists@...>

Hi community,

21 messages 2013/07/09

[#408854] execute commands within SMTP email code: send content in variables and not actual variables — dJD col <lists@...>

I am trying to send an email using the code below. I am able to send the

9 messages 2013/07/10

[#409031] tap { break } idiom deserves its own Kernel method? — Andy Lowry <lists@...>

I use this idiom from time to time:

13 messages 2013/07/22

[#409072] Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...>

This is what I want to do.

19 messages 2013/07/23
[#409102] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/24

[#409103] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/25

tamouse m. wrote in post #1116598:

[#409122] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/26

[#409142] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/26

tamouse m. wrote in post #1116750:

[#409073] class <=> module — Bráulio Bhavamitra <lists@...>

Hello all,

17 messages 2013/07/23

[#409104] Ruby newbie question on Methods (NoMethoderror) — "Crispian A." <lists@...>

I have recently started learning ruby and so I am writing a small little

10 messages 2013/07/25

[#409170] Working through Ch.10 for learning to program 2.0 (Chris Pine) — JD JD <lists@...>

So, I have been working through this book, and have been doing ok up

33 messages 2013/07/28
[#409195] Re: Working through Ch.10 for learning to program 2.0 (Chris Pine) — Harry Kakueki <list.push@...> 2013/07/29

I tried this and came up with a one-liner that seems to do it. It sorts the

[#409258] WATIR - ScriptError popup on IE - Unable to get rid of! — Graeme Halls <lists@...>

I am new to Ruby & Watir, and I am having a nightmare with IE and Script

11 messages 2013/07/31

Re: How can I add minutes,seconds and hours to a DateTime object?

From: Walton Hoops <me@...>
Date: 2013-07-03 04:22:28 UTC
List: ruby-talk #408670
On 7/2/2013 4:33 PM, Mike Stok wrote:
> On 2013-07-02, at 3:41 PM, Love U Ruby <lists@ruby-forum.com> wrote:
>
>> finally I came up with as below :
>>
>> require 'date'
>>
>> text_t = '2:12:03 PM ET'
>> dt = DateTime.parse(text_t, '%I:%M %p %Z')
>> # => #<DateTime: 2013-07-03T14:12:03+00:00
>> ((2456477j,51123s,0n),+0s,2299161j)>
>> dt.to_s
>> # => "2013-07-03T14:12:03+00:00" # !> invalid offset is ignored
>> dh = Date._strptime(dt.to_s,'%Y-%m-%dT%H:%M:%S%z')
>> # => {:year=>2013,
>> #     :mon=>7,
>> #     :mday=>3,
>> #     :hour=>14,
>> #     :min=>12,
>> #     :sec=>3,
>> #     :zone=>"+00:00",
>> #     :offset=>0}
>>
>> dh[:hour] += 30 # => 44
>> dh
>> # => {:year=>2013,
>> #     :mon=>7,
>> #     :mday=>3,
>> #     :hour=>44,
>> #     :min=>12,
>> #     :sec=>3,
>> #     :zone=>"+00:00",
>> #     :offset=>0}
>>
>> dh.values[0..-2].join(" ")
>> # => "2013 7 3 44 12 3 +00:00"
>> DateTime.ordinal(*dh.values[0..-3])
>> # => #<DateTime: 2013-01-07T03:44:12+00:00
>> ((2456300j,13452s,0n),+0s,2299161j)>
>>
> ratdog:tmp mike$ pry
> [1] pry(main)> require 'date'
> => false
> [2] pry(main)> dt = DateTime.parse('2:12:03 PM ET', '%I:%M %p %Z')
> => #<DateTime: 2013-07-02T14:12:03+00:00 ((2456476j,51123s,0n),+0s,2299161j)>
> [3] pry(main)> dt + (30.0 / 24) # days
> => #<DateTime: 2013-07-03T20:12:03+00:00 ((2456477j,72723s,0n),+0s,2299161j)>
>
Both approaches make me nervous.  The first because your parsing a date 
where the time is 44:00 (clearly an invalid date), which at best I 
believe is undocumented behavior, and more likely is exploiting a bug 
that may be fixed at a later date.

The is Mike's is probably fine, but makes me worry about rounding errors 
for some values.  Instead I'd do the math using Time, which uses seconds 
instead of fractions of days:

irb(main):006:0> now = DateTime.now.to_time
=> 2013-07-02 22:09:19 -0600
irb(main):007:0> hours = 2
=> 2
irb(main):008:0> minutes = 5
=> 5
irb(main):010:0> now + (hours * 60 * 60) + minutes * 60
=> 2013-07-03 00:14:19 -0600

Ideally the Stdlib would have a TimeSpan class which could be added and 
subtracted from DateTime, or be the result of subtracting 2 DateTimes.  
Would be a good idea for a gem.

In This Thread

Prev Next