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