Pergunta

Eu instalei Ruby-1.8.6-P383 com RVM. O sistema rubi é 1.9.1_p378-1

Estou recebendo a data errada da data.Today e DateTime.Now ao usar o Ruby 1.8 .. enquanto o tempo.No está correto:

irb(main):002:0> DateTime.now.to_s
=> "2126--1-10618T11:23:43+00:00"
irb(main):004:0> Date.today.to_s
=> "2126--1-10618"
irb(main):005:0> Time.now
=> Thu Jan 28 11:55:27 +0000 2010

Tudo está bem se eu mudar para Ruby 1.9:

irb(main):003:0> DateTime.now.to_s
=> "2010-01-28T11:58:51+00:00"
irb(main):004:0> Date.today.to_s
=> "2010-01-28"
irb(main):005:0> Time.now
=> 2010-01-28 11:59:05 +0000

Qualquer conselho sobre como fazer com que o DateTime funcione corretamente no Ruby 1.8 seria mais apreciado!

Foi útil?

Solução

Eu tropecei em problemas semelhantes e obtive três soluções diferentes, das quais tentei 2 e ambas funcionei. Leia mais sobre isso daqui:

http://www.ruby-forum.com/topic/210647

JARMO

Outras dicas

A corda retornada parece estar muito quebrada: i) o ano é 2126, ii) Há dois hífens entre o ano e o mês e ii) o dia é 10618.

Em que plataforma você está? Em que fuso horário você está (o exemplo implica que você está no GMT)?

Estou no WinXP e o Ruby 1.8.6-P111 fornece o mesmo resultado nos três casos.

EDIT: Eu fiz algumas cavadas no código -fonte do rubi (Date e DateTime são definidos em lib/date.rb).

Acontece que Date.today liga internamente Time.now.__send__(:to_date)..., então talvez você deva tentar ligar Time.now.__send__(:to_date).to_s dentro irb e comparar a saída com Time.now.to_s Para diminuir o problema.

Date.today também liga .new_start(...) no criado Date Instância, então talvez isso esteja bagunçando a data do seu caso.

Não tenho certeza se você está executando as coisas localmente ou no servidor, mas acho que Ruby pode estar tomando a data do servidor, que pode estar em um fuso horário diferente do que você é e, portanto, aparece de maneira diferente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top