Обнаружил не очень правильное поведение Ruby при преобразовании времени между поясным и универсальным — следующий код:
local = Time.now puts "local\t= #{local}" utc = local.utc puts "utc\t= #{utc}" puts "local\t= #{local}"
выводит:
local = 2012-08-31 05:53:48 +0600 utc = 2012-08-30 23:53:48 UTC local = 2012-08-30 23:53:48 UTC
Т.е. метод utc
не только выдает соответствующее универсальное время, но и приводит к нему задействованный объект. Причем, восклицательного знака в имени метода нет... Проблема, естественно, обходится методом dup
.