Другой формат времени в ruby ​​1.9.2 и ruby ​​1.8.7, вызывающий проблемы - PullRequest
3 голосов
/ 28 июля 2011

Я обновляю версию ruby ​​с ruby ​​1.8.7 до ruby ​​1.9.2 в моем выходе из приложения Ruby on rails, в котором широко используются вычисления, связанные со временем. Но после переключения на ruby ​​1.9.2 -p290 не работает. Я думаю, что проблема с

$ rvm use 1.8.7

ruby-1.8.7-p334 :001 > Time.now
=> Thu May 12 12:42:35 +0200 2011 

$ rvm use 1.9.2

ruby-1.9.2-p180 :001 > Time.now
=> 2011-05-12 12:42:44 +0200 

Может, кто-нибудь подскажет, как решить эту проблему или Как изменить или переопределить формат ruby ​​1.9.2 по умолчанию обратно на старый или как решить связанные с этим изменения в новой версии ruby.

Спасибо

1 Ответ

2 голосов
/ 28 июля 2011

вы можете использовать

Time.now.asctime

в 1,9

РЕДАКТИРОВАТЬ 1:

хорошо, зависит от того, как вы собираетесь его использовать.Это, вероятно, должно работать для вас:

irb(main):001:0> class Time
irb(main):002:1> class << self
irb(main):003:2>   alias :orig_now :now
irb(main):004:2>
irb(main):005:2*   def now
irb(main):006:3>     orig_now.asctime
irb(main):007:3>   end
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0> Time.now
=> "Thu Jul 28 12:29:08 2011"  # STRING
irb(main):011:0>

РЕДАКТИРОВАТЬ 2:

Хорошо, я понял ваш вопрос несколько неправильно.Приведенный выше патч заставит Time.now возвращать строку (не объект Time).

Если вы просто хотите, чтобы объект Time представлялся другим, вы можете применить это:

irb(main):011:0> class Time
irb(main):012:1>
irb(main):013:1* def inspect
irb(main):014:2>   self.asctime
irb(main):015:2> end
irb(main):016:1> end
=> nil
irb(main):017:0> Time.now
=> Thu Jul 28 13:41:16 2011   # TIME
...