From what I can tell, Rails 2.1's timezone updates didn't affect the Date class at all. Since show_from is a Date parsed directly from the user, it will be in the user's timezone. We could change show_from to be a datetime at midnight of the specified day in the user's timezone, but my patch requires less modification. Basically, Times/Datetimes in the database are in UTC, but Dates are not.

On Sep 8, 2008, at 10:31 AM, Reinier Balt wrote:

I find the whole timezone thing confusing right now :-) So you are probably right in that the patch was wrong.

I’m also not convinced yet about your patch though. In my application.rb I have - a setting for the timezone that is used to store dates in the database (I use UTC). - Since the upgrade to rails 2.1 (?) there is a new setting for the timezone where your server is at. (I use ‘Amsterdam’) - And we have the timezone setting in the preferences. (I use UTC +1)

Assuming dates in the database are in UTC shouldn’t

find(:all, :conditions => ['show_from <= ?', Time.now.utc ]).collect { |t| t.activate! }

be correct? Or is activerecord doing timezone conversions in the :conditions clause too?

You’re suggesting:

find(:all, :conditions => ['show_from <= ?', proxy_owner.date ]).collect { |t| t.activate! }

proxy_owner.date uses Time.now.in_time_zone(prefs.time_zone).to_date

So it uses the timezone setting from Tracks’ preferences. If activerecord is _not_ doing timezone conversion in the :conditions, it compares UTC with the users pref, right? Or am I missing something?

Everything probably changes if a user changes the default config.active_record.default_timezone from UTC to something else. I think that in that case using Time.now.utc goes wrong.

Isn’t the best route to use Time.now.in_time_zone(config.active_record.default_timezone) or something like that? Any timezone wizards here :-)

Reinier


Van: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] ] Namens Eric Allen
Verzonden: zondag 7 september 2008 4:56
Aan: [email protected]
Onderwerp: [Tracks-discuss] ticket 747 and timezone issue

I believe the fix for ticket 747 is incorrect. It may fix for people who are ahead of UTC, but somebody like me who lives behind UTC (in the US) will see todos activate from the tickler before they should. I believe the correct fix is proxy_owner.date, not Time.now.utc. Attached is the commit I would push to master if I were sure it didn't break other stuff. It has fixed my problem (which I'm not sure I ever filed a bug for). Comments?



_______________________________________________
Tracks-discuss mailing list
[email protected]
http://lists.rousette.org.uk/mailman/listinfo/tracks-discuss

Reply via email to