Todd Benson
1/7/2008 7:09:00 PM
On Jan 6, 2008 2:04 PM, Greg Go <plant@ultraspace.com> wrote:
> Hello, everybody:
>
> I'm new to ruby, but I'm pretty sure this isn't a problem with me.
>
> I'm running ruby 1.8.6 on Windows XP, and using NetBeans as my IDE.
>
> My application reads the rise, transit and set times for the sun at my
> location from a spreadsheet. The spreadsheet provides the date and time
> as an astronomical julian date that I then use to create a number of
> DateTime objects.
>
> I manually check for Daylight Savings Time by creating two more DateTime
> objects, one for DST start, the other for DST end as class variables.
>
> I have a method that returns the local time of the event as another
> DateTime object created with DateTime's new_offset method.
>
> Here's the code that actually determines whether it's DST or not, and
> creates the local time object accordingly:
>
> offset = Rational(-7,24)
> if (@jd > @@dstStart) && (@jd < @@dstEnd)
> offset = Rational(-6,24)
> end
> @ld = @jd.new_offset(offset)
>
> @jd is the julian date of the event.
>
> The problem is this:
> For some events, @ld is one hour off.
>
> Here's an example:
> @jd.to_s #=> 2008-03-09T13:24:59+00:00
> @ld.to_s #=> 2008-03-09T06:24:59-06:00
>
> In my book, 13 - 6 = 7, not 6.
>
> I've tried with different offset values, as well:
> @jd.to_s #=> 2008-03-09T13:24:59+00:00
> @ld.to_s #=> 2008-03-09T08:24:59-05:00 - Correct
>
> @jd.to_s #=> 2008-03-09T13:24:59+00:00
> @ld.to_s #=> 2008-03-09T05:24:59-08:00 - Correct
>
> So, it appears that it's only when the offset is -6.
>
> This is only happening to some events. However, all events are instances
> the same class, with the code above.
>
> I've used this base class to do the same thing with lunar events, with
> no problem.
>
> This seems like a bug to me.
>
> Any ideas as to what's going on?
Output your dstStart and dstEnd values while you run the program
(inside the "if" construct). That should give you some idea. I don't
think this is a bug in the new_offset method, but who knows? You said
"some" events. Is it always at the same time of day? A certain time
of year?
Todd