Time.parse를 사용하여 문자열에서 Time 객체를 만듭니다.Ruby Time.parse가 범위 오류를 벗어납니다.
Time.parse("05-07-2009 19:00")
하지
어떤 아이디어 않는 반면 어떤 이유로
Time.parse("05-14-2009 19:00")
를 들어
는 인수 우리의 범위 오류의 원인은?
Time.parse를 사용하여 문자열에서 Time 객체를 만듭니다.Ruby Time.parse가 범위 오류를 벗어납니다.
Time.parse("05-07-2009 19:00")
하지
어떤 아이디어 않는 반면 어떤 이유로
Time.parse("05-14-2009 19:00")
를 들어
는 인수 우리의 범위 오류의 원인은?
제 생각에는 문자열의 두 번째 부분 (14)이 해당 월이 될 것으로 예상하는 것입니다.
아마 그래서 첫 번째 값은 14 월 5 일을 지정하기 위해 노력하고, 일 - 월 - 년 형식을 기대하고있다.
당신은 문자열 사용의 형식을 알고있는 경우 :
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])
이는 휴리스틱 스가 Time#parse
이기 때문입니다.
영미어 형식 때문입니다.
대시 '-'는 mm-dd-yyyy이고 슬래시 '/'는 dd/mm/yyyy를 나타냅니다.
이 동작은 이고, 의도적으로 1.9에 변경됩니다. eur, iso 및 jp 날짜 표준을 달성합니다.
여기에 형식이 섞여 있다고 생각합니다. 대시'-'로'dd-mm-yyyy' 또는'yyyy-mm-dd'를 기대합니다 (후자의 경우 두 번째'y '는 선택 사항입니다).'/'는'mm/dd/yyyy' (여기서 처음 두 개는 선택 사항입니다.) –
이것이 낡은 대답이라는 것을 알고 있지만 설명 된 행동을 보지 못했습니다. 나는 1.9.2p136을 사용하고있다. Time # parse는 '-'또는 '/'를 사용할지 여부에 관계없이 입력을 dd/mm/yyyy로 해석합니다. –
위 내 의견이 올바르지 않습니다. Ruby 1.8.6과 1.8.7에서는'mm/dd/yyyy'이고 1.9.2에서는'dd/mm/yyyy'입니다. 두 Ruby 모두 대시 형식을'dd-mm-yyyy'로 구문 분석합니다. 하지만 루비 버전 만있는 경우 또는 다른 요인이 구문 분석에 영향을 미치는 경우 100 % 확실하지 않습니다. 컴퓨터의 날짜, 시간, 지역 및/또는 시간대 설정과 비슷합니다. –
아마도이 문제를 해결할 필요는 없지만 자연 언어 날짜/시간 파서 Chronic을 체크 아웃하면 나에게 많은 시간을 절약 할 수 있습니다.
strptime은 멋있어 보이지만 Time.strptime에 대해 정의되지 않은 메서드가있어서 시간 객체가 필요합니다. – Tony
... 여기에 사용 시간 Time.strptime (date_time [ 'value'], "% m- % d- % Y % H : % M ") – Tony
strptime이 Time에 더 이상 존재하지 않는 것 같습니다. 대안 – Miquel