Bug #8376

utc method changes original time object

Added by Arjan Diepenbroek over 2 years ago. Updated over 2 years ago.

ruby -v:1.8.7, 1.9.3, 2.0.0 Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN


The utc method changes the original time object when called.

For example when on a system with a CET timezone.

t = Time.new(2013)
t.zone # CET
t.zone # UTC


#1 Updated by Yui NARUSE over 2 years ago

  • Status changed from Open to Rejected

Time#utc is destructive method.
Use dup if you want a copy.

#2 Updated by Achilleas Buisman over 2 years ago

naruse (Yui NARUSE) wrote:

Time#utc is destructive method.
Use dup if you want a copy.

That seems the point of this issue. The behaviour is inconsistent. t.utc! should be the way to destroy t in the example. This should be changed... ruby isn't PHP.

#3 Updated by Yukihiro Matsumoto over 2 years ago

I admit this is a bad design, but changing it introduces incompatibility.
We don't consider it as a bug (thus we rejected).
Submit feature request instead, if you really want to change.
Maybe fixed in the future, if we can provide proper migration path.


#4 Updated by Nobuyoshi Nakada over 2 years ago

You can use Time#getutc or #getgm.

Also available in: Atom PDF