Matt Huggins Matt Huggins - 1 month ago 6x
Ruby Question

Is in UTC?

in Ruby returns the current date. However, what timezone is it in? I assume UTC, but I want to make sure. The documentation doesn't state either way.


Dates do not have timezones, since they don't represent a time.

That said, as for how it calculates the current day, let's look at this extract from the code for

time_t t;
struct tm tm;
// ...
if (time(&t) == -1)
if (!localtime_r(&t, &tm))

It then proceeds to use use tm to create the Date object. Since tm contains the system's local time using localtime(), therefore uses the system's local time, not UTC.

You can always use Time#utc on any Time convert it in-place to UTC, or Time#getutc to return a new equivalent Time object in UTC. You could then call Time#to_date on that to get a Date. So: some_time.getutc.to_date.

If you’re using ActiveSupport’s time zone support (included with Rails), note that it is completely separate from Ruby’s time constructors and does not affect them (i.e. it does not change how or work). See also ActiveSupport extensions to Time.