Rubi Time.parse dá-me para fora do intervalo de erro
-
03-07-2019 - |
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?
Solução
Meu palpite seria que seu esperando a segunda parte da string (14) para ser o mês.
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.