2011-04-13 5 views
2

사용자 정의 날짜 형식 (예 : 'x- % Y')을 구문 분석하도록 DateTime을 얻으려면 어떻게해야합니까?Rails에서 DateTime이있는 사용자 정의 DATE_FORMAT 구문 분석

Time::DATE_FORMATS[:x_year] = 'x-%Y' 
Date::DATE_FORMATS[:x_year] = 'x-%Y' 

내가 전화 할 때 :

내가합니다 (RoR API에 따라)를 가진 초기화 내에서 형식을 설정 한

DateTime.strptime('x-2011', 'x-%Y') 

올바른 결과가 반환되지만

DateTime.parse('x-2011') 

ArgumentError: invalid date 
+0

그것의 아마 가치가 DATE_FORMATS 통해 & & 유효성 검사/구조를 반복 얻을 수있다 : 그러나 여전히 뭔가를 할 수 형식은이 질문의 목적을위한 임의의 형식입니다. % m/% d/% Y % M : % I % p ' – BobBrez

답변

2

그런 가능성을 결코 들어 보지 못했습니다.

class DateTime 
    class << self 
    alias orig_parse parse 
    end 
    def self.parse(string, format = nil) 
    return DateTime.orig_parse(string) unless format 
    DateTime.strptime(string, Date::DATE_FORMATS[format]) 
    end 
end 

in your example it might look like that: 

Date::DATE_FORMATS.merge!({:xform => "x-%Y"}) 
DateTime.parse('x-2011', :xform) #=> Sat, 01 Jan 2011 00:00:00 +0000 

당신은 '형식'속성을 제거하고 'X- %의 Y'고 언급 대신

+0

대답은 작동하는 것 같지만 근본적인 구현은 비슷한 일을해야한다고 생각합니다. 응용 프로그램을 통해 설정하고 다시 사용할 수 있어야하는 구성과 같은 느낌이 들었습니다. – BobBrez

관련 문제