Ruby Time.parse는 범위를 벗어난 오류를 제공합니다
-
03-07-2019 - |
문제
Time.parse를 사용하여 문자열에서 시간 객체를 만듭니다.
몇 가지 이유
Time.parse("05-14-2009 19:00")
범위 오류에 대한 인수를 유발합니다
Time.parse("05-07-2009 19:00")
하지 않습니다
어떤 아이디어?
해결책
내 생각에 문자열의 두 번째 부분 (14)이 달이 될 것으로 기대하는 것 같아요.
다른 팁
문자열 사용 형식을 알고 있다면 :
Time.strptime(date, format, now=self.now) {|year| ...}
http://www.ruby-doc.org/core-1.9/classes/time.html#m000266
그것은 당신의 문제를 해결하고 아마도 Time.parse
.
편집하다:
그들이 가져간 것 같습니다 strptime
시간 수업에서 그러나 그것은 호출되었습니다 Date.strptime
그래도. 당신이 레일에 있다면 당신은 할 수 있습니다 :
Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time
순수한 루비를 사용하면 다음과 같습니다.
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])
또한보십시오: Ruby on Rails의 날짜 및 시간 형성 문제.
그것은 휴리스틱 때문입니다 Time#parse
.
그리고 그것은 영미 형식 때문입니다.
Dashes '-'MM-DD-Yyyy가 예상되며 슬래시가 포함되어 있습니다. '/'DD/MM/YYYY가 예상됩니다.
이 행동 변화 의도적으로 1.9. EUR, ISO 및 JP 날짜 표준을 달성합니다.
이 문제를 해결하기 위해 필요하지는 않지만 자연어 날짜/시간 파서를 확인하는 것이 좋습니다. 만성병 환자, 그것은 나에게 많은 일을 몇 번 저축했습니다.
아마도 주간 형식을 기대할 수 있으므로 첫 번째 가치는 14 개월의 5 일을 지정하려고합니다.
제휴하지 않습니다 StackOverflow