Time#utc, Time#gmt and Time#localtime are destructive methods

Calling Time#utc, Time#gmt or Time#localtime will not create a converted copy. Instead these methods modify the receiving Time object:

 >> time = Time.now
 => Thu Aug 25 09:52:28 +0200 2011
 >> time.utc
 => Thu Aug 25 07:52:28 UTC 2011
 >> time
 => Thu Aug 25 07:52:28 UTC 2011

This can have unexpected side effects when other code is holding pointers to the Time object you are modifying. To be safe, call these methods on a clone of the Time object. You can clone a Ruby object by using #dup Show archive.org snapshot :

 >> time = Time.now
 => Thu Aug 25 09:54:40 +0200 2011
 >> time.dup.utc
 => Thu Aug 25 07:54:40 UTC 2011
 >> time
 => Thu Aug 25 09:54:40 +0200 2011
Henning Koch Over 12 years ago