Pergunta

Eu estou usando Time.parse para criar um objeto Tempo de uma string.

Por alguma razão

Time.parse("05-14-2009 19:00")

provoca um argumento nossa do intervalo de erro, enquanto

Time.parse("05-07-2009 19:00")

não

Todas as idéias?

Foi útil?

Solução

Meu palpite seria que seu esperando a segunda parte da string (14) para ser o mês.

Este link pode ajudá-lo a analisá-lo.

Outras dicas

Se você sabe o formato do uso string:

Time.strptime(date, format, now=self.now) {|year| ...}   

http://www.ruby-doc.org /core-1.9/classes/Time.html#M000266

Ele vai resolver o seu problema e provavelmente será mais rápido do que Time.parse.

EDIT:

Parece que eles levou strptime da classe Time, mas chamou Date.strptime de qualquer maneira. Se você estiver on Rails você pode fazer:

Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time

Se você usar rubi puro, então você precisa:

require 'date'
d=Date._strptime("05-14-2009 19:00","%m-%d-%Y %H:%M")

Time.utc(d[:year], d[:mon], d[:mday], d[:hour], d[:min], 
         d[:sec], d[:sec_fraction], d[:zone])

Veja também: Data e hora formatação problemas no ruby ??on Rails .

É por causa das heurísticas de Time#parse.

E é devido a formatos anglo-americana.

Com traços '-'. Que espera mm-dd-aaaa, com barras '/' que espera dd / mm / aaaa

Este comportamento altera intencionalmente em 1,9. para cumprir normas de euros, iso e data jp.

Você provavelmente não precisa dele para resolver este problema, mas eu ainda recomendo verificar a linguagem natural de data / hora analisador crônica , ele me salvou um monte de trabalho um par de vezes.

É provavelmente esperando formato dia-mês-ano, para que o seu primeiro valor está tentando especificar o 5º dia do 14º mês.

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