한 달에 날짜가 너무 많은 날짜를 올바르게 구문 분석하는 방법이 있습니까? 예
'2016-01-32'
= '2016-02-01'
'2015-12-32'
= '2016-01-01'
이것은 내 JS 기반 프런트 엔드의 일부에서 쉬운 날짜 조작을 지원하기위한 것입니다.
이것은 Ruby 2.3.0 및 Rails 4.2.5입니다. 나는 이것이 이전 릴리스에서 작동했다고 생각합니다-아마도 구문 분석 규칙이 강화 되었습니까?
나는 이것을 직접 구현하기보다는 표준 라이브러리에 의존하고 윤년 등에 대한 지식입니다.
Date::_parse
(또는 Date::_iso8601
)을 사용 하여 유효성 검사없이 날짜 문자열을 구문 분석 할 수 있습니다 .
require 'date'
h = Date._parse('2016-01-32')
#=> {:mday=>32, :year=>2016, :mon=>1}
그리고 Simone Carletti의 제안을 사용하여 날짜 인스턴스를 만듭니다 .
Date.new(h[:year], h[:mon]).next_day(h[:mday] - 1)
#=> #<Date: 2016-02-01 ...>
일과 월이 모두 범위를 벗어날 수있는 경우 다음을 사용할 수 있습니다.
h = Date._parse('2016-14-32')
#=> {:mday=>32, :year=>2016, :mon=>14}
Date.new(h[:year]).next_month(h[:mon] - 1).next_day(h[:mday] - 1)
#=> #<Date: 2017-03-04 ...>
next_day
과 next_month
동등 +
하고 <<
마지막 라인으로도 기록 될 수 있도록, 각각 :
Date.new(h[:year]) << (h[:mon] - 1) + (h[:mday] - 1)
또는:
Date.new(h[:year]) << h[:mon].pred + h[:mday].pred
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다