Timezone issue with legacy data stored in Eastern time


I've Googled and searched for this for many hours now and couldn't find an answer although I did find a lot about timezones and rails.

Specifically I'm attaching a basic Rails CRUD frontend onto a legacy database. The datetime fields in the database are stored as Eastern Standard Time. There is a lot of legacy code that uses this database and is expecting to get back times in EST, so I can't change them to UTC.

Is there a way in Rails to tell ActiveRecord to use Eastern for storing the datetime fields?

I've tried a number of combinations for config.time_zone and config.active_record.default_timezone. FYI, rake time:zones:local returns * UTC -06:00 * Central Time (US & Canada).

Any ideas would be greatly appreciated.

Thanks, -Jonathan

You could use filters to offset the times by six hours on save and read.

Alternatively you could tell rails that it is working in UTC then local and UTC times will be the same. If all your times are actually then in EST all will be well. Just don't let on to rails that you are lying to it. You might have to fiddle a bit if you do Time.now though.

There may well be better ways though.



You could use “Eastern Time (US & Canada)” as your timezone? Like this:

config.time_zone = ‘Eastern Time (US & Canada)’

Would this do the trick?



You could use "Eastern Time (US & Canada)" as your timezone? Like this:

config.time_zone = 'Eastern Time (US & Canada)'

Would this do the trick?

No, because it expects the times in the db to be in UTC and will convert them (wrongly) to EST on reading and writing.