First up: set a cookie, any cookie:
\ var date = new Date();\ // returns offset from GMT in minutes\ var offset = date.getTimezoneOffset(); // set a cookie however you see fit, I like to use jQuery.cookie\ \$.cookie(‘timezone’, offset);\
Then, in application.rb or wherever you like:
\ def browser\_timezone\ return nil if cookies[:timezone].blank?\ `browser_timezone ||= begin min = cookies[:timezone].to_i TimeZone[(min + (-2 * min)).minutes] end end
The cookie gives you minutes from GMT, but `ActiveSupport::TimeZone@ expects seconds from GMT.
Anyway, hopefully someone will find my pointing it out useful. It may buckle under pressure (with daylight savings), but guessing and getting it right 50% of the time is better than forcing user interaction. Probably.