When should `DateTime.now.utc` vs. `Time.current.utc` be used in Rails?
ruby-on-rails, time
Solution
I think you should use `.current` instead of `.now`.
The difference of `.current` and `.now` is `.now` use the server's timezone, while `.current` use what the Rails environment is set to. If it's not set, then `.current` will be same as `.now`.
Time.current
Returns Time.zone.now when Time.zone or config.time_zone are set, otherwise just returns Time.now.
DateTime.current
Returns Time.zone.now.to_datetime when Time.zone or config.time_zone are set, otherwise returns Time.now.to_datetime.
Problem
In Rails, I'm a little confused on the guidance between when to use DateTime.now.utc and Time.current. There seem to be differing opinions inside the framework about which is best, particularly in different versions. It looks like `DateTime.now.utc` produces a timestamp with a UTC offset of zero, while `Time.current.utc` produces a timestamp with a time zone of UTC. That seems like a subtle distinction but it's pretty important in many cases (e.g. DST calculations). When should you use `DateTime.now.utc`, and when should you use `Time.current.utc`? Is there any reason to use `DateTime.now.utc` instead of `Time.current.utc`?