Domanda

Ho installato ruby-1.8.6-P383 con RVM. Sistema rubino è 1.9.1_p378-1

Ricevo la data sbagliata da Date.today e DateTime.now quando si utilizza Ruby 1.8 .. Mentre Time.now è corretto:

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

Tutto va bene se passo al rubino 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

Qualche consiglio su come raggiungere DateTime per funzionare correttamente in Ruby 1.8 sarebbe apprezzato!

È stato utile?

Soluzione

sono incappato problema simile e ottenuto 3 diverse soluzioni, che ho provato 2 ed entrambi lavorato. Per saperne di più su di esso da qui:

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

Jarmo

Altri suggerimenti

La stringa restituita sembra essere molto rotto:. I) l'anno è 2126, ii) ci sono due trattini tra l'anno e il mese, e ii) il giorno è 10618

Quale piattaforma stai? Quali fuso orario sei sul (l'esempio implica che sei in GMT)?

Sono su WinXP e Ruby 1.8.6-P111 dà lo stesso risultato in tutti e tre i casi.

Edit: ho fatto qualche scavo nel codice sorgente di Ruby (Date e DateTime sono definiti in lib/date.rb).

Si scopre che Date.today chiama internamente Time.now.__send__(:to_date)..., quindi forse si dovrebbe provare a chiamare Time.now.__send__(:to_date).to_s in irb e confrontare l'output a Time.now.to_s al fine di circoscrivere il problema.

Date.today invita inoltre .new_start(...) nell'istanza Date creato quindi forse è rovinare la data nel vostro caso.

Non sono sicuro se si esegue le cose a livello locale, o sul server, ma penso rubino potrebbe essere prendendo la data del server, che può essere in un fuso orario diverso di quello che sono, e, quindi, appaiono in modo diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top