[RUBY-ON-RAILS] 루비 온 레일즈에서, 어떻게 "일 10 월 5 일"에서와 같이 "일"접미사로 날짜를 포맷합니까?
RUBY-ON-RAILS루비 온 레일즈에서, 어떻게 "일 10 월 5 일"에서와 같이 "일"접미사로 날짜를 포맷합니까?
"일", "일"을 앞에 0이되지만 포함하지 않고 일주일의 짧은 하루, 짧은 월, 달의 일 "차"또는 "RD"접미사 : 나는 형식으로 날짜를 표시합니다.
예를 들어,이 질문은 요청 된 날은 "목 10월 2일"를 표시합니다.
루비 1.8.7를 사용하고, 그리고 Time.strftime는이 작업을 수행하지 않는 것 같습니다. 가있는 경우 나 표준 라이브러리를 원합니다.
해결법
-
==============================
1.'active_support'에서 ordinalize 방법을 사용합니다.
'active_support'에서 ordinalize 방법을 사용합니다.
>> time = Time.new => Fri Oct 03 01:24:48 +0100 2008 >> time.strftime("%a %b #{time.day.ordinalize}") => "Fri Oct 3rd"
루비 2.0 IRB를 사용하는 경우, 먼저 실행해야합니다 :
require 'active_support/core_ext/integer/inflections'
-
==============================
2.당신은 숫자에 active_support의 ordinalize 도우미 방법을 사용할 수 있습니다.
당신은 숫자에 active_support의 ordinalize 도우미 방법을 사용할 수 있습니다.
>> 3.ordinalize => "3rd" >> 2.ordinalize => "2nd" >> 1.ordinalize => "1st"
-
==============================
3.단지 조금 더 패트릭 맥켄지의 답변을 복용, 당신은 당신의 설정 / 초기화에 디렉토리라는 date_format.rb를 새 파일을 만들 수 있습니다 (또는 당신이 원하는 무엇이든)과이를 넣어 :
단지 조금 더 패트릭 맥켄지의 답변을 복용, 당신은 당신의 설정 / 초기화에 디렉토리라는 date_format.rb를 새 파일을 만들 수 있습니다 (또는 당신이 원하는 무엇이든)과이를 넣어 :
Time::DATE_FORMATS.merge!( my_date: lambda { |time| time.strftime("%a, %b #{time.day.ordinalize}") } )
그런 다음 뷰 코드에 당신은 단순히 당신의 새로운 날짜 형식을 지정하여 임의의 날짜를 포맷 할 수 있습니다 :
My Date: <%= h some_date.to_s(:my_date) %>
그것의 간단한, 그것은 작동하고,에 구축하기 쉽습니다. 그냥 다른 날짜 형식 각각에 대해 date_format.rb 파일에서 더 많은 형식의 라인을 추가합니다. 여기에 좀 더 구체화 예이다.
Time::DATE_FORMATS.merge!( datetime_military: '%Y-%m-%d %H:%M', datetime: '%Y-%m-%d %I:%M%P', time: '%I:%M%P', time_military: '%H:%M%P', datetime_short: '%m/%d %I:%M', due_date: lambda { |time| time.strftime("%a, %b #{time.day.ordinalize}") } )
-
==============================
4.
>> require 'activesupport' => [] >> t = Time.now => Thu Oct 02 17:28:37 -0700 2008 >> formatted = "#{t.strftime("%a %b")} #{t.day.ordinalize}" => "Thu Oct 2nd"
-
==============================
5.바르 토스의 대답처럼 나는, 그러나 이것은 우리가 이야기하고있는 레일 때문에 헤이,하자가 악독에서 한 단계 차지합니다. (편집 : 난 그냥 다음과 같은 방법을 monkeypatch하려고했지만, 거기 회전은 청소기 방법입니다.)
바르 토스의 대답처럼 나는, 그러나 이것은 우리가 이야기하고있는 레일 때문에 헤이,하자가 악독에서 한 단계 차지합니다. (편집 : 난 그냥 다음과 같은 방법을 monkeypatch하려고했지만, 거기 회전은 청소기 방법입니다.)
날짜 시간 인스턴스는 그 기호가 유효 정의 된 포맷으로 인식되면 적절한 형식 문자열을 리턴하는 파라미터로서 하나의 심볼을 취하고 ActiveSupport 의해 공급 to_formatted_s 방법을 가지고있다.
그 기호는 표준 포맷 함수 ... 또는 발동을위한 두 문자열을 문자의 해시 시간 : DATE_FORMATS에 의해 정의된다. Bwahaha.
d = DateTime.now #Examples were executed on October 3rd 2008 Time::DATE_FORMATS[:weekday_month_ordinal] = lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") } d.to_formatted_s :weekday_month_ordinal #Fri Oct 3rd
당신이 monkeypatch 수있는 기회를 저항 할 수없는 경우하지만, 이봐, 당신은 항상 깨끗한 인터페이스를 줄 수 :
class DateTime Time::DATE_FORMATS[:weekday_month_ordinal] = lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") } def to_my_special_s to_formatted_s :weekday_month_ordinal end end DateTime.now.to_my_special_s #Fri Oct 3rd
-
==============================
6.설정 / 초기화 / srtftime.rb
설정 / 초기화 / srtftime.rb
module StrftimeOrdinal def self.included( base ) base.class_eval do alias_method :old_strftime, :strftime def strftime( format ) old_strftime format.gsub( "%o", day.ordinalize ) end end end end [ Time, Date, DateTime ].each{ |c| c.send :include, StrftimeOrdinal }
Time.new( 2018, 10, 2 ).strftime( "%a %b %o" ) => "Tue Oct 2nd"
당신은뿐만 아니라 날짜와 날짜 시간에 이것을 사용할 수 있습니다 :
DateTime.new( 2018, 10, 2 ).strftime( "%a %b %o" ) => "Tue Oct 2nd" Date.new( 2018, 10, 2 ).strftime( "%a %b %o" ) => "Tue Oct 2nd"
-
==============================
7.조나단 트란은 그가 처음 약식 달 다음에 주의 축약 일을 찾고 있었다라고 않았지만, 나는 그것이 그 레일을 알고 여기까지 사람들을 위해 유용 할 수 있습니다 생각은 더 많은 것을 위해 아웃 - 오브 - 박스 지원을하고있다 일반적으로 사용 가능한 긴 월, ordinalized 일 정수 년 6 월 제 1 회, 2018 년으로, 올해 하였다.
조나단 트란은 그가 처음 약식 달 다음에 주의 축약 일을 찾고 있었다라고 않았지만, 나는 그것이 그 레일을 알고 여기까지 사람들을 위해 유용 할 수 있습니다 생각은 더 많은 것을 위해 아웃 - 오브 - 박스 지원을하고있다 일반적으로 사용 가능한 긴 월, ordinalized 일 정수 년 6 월 제 1 회, 2018 년으로, 올해 하였다.
그것은 쉽게 달성 할 수있다 :
Time.current.to_date.to_s(:long_ordinal) => "January 26th, 2019"
또는:
Date.current.to_s(:long_ordinal) => "January 26th, 2019"
당신은뿐만 아니라 원하는 경우 시간 인스턴스에 충실 할 수 있습니다 :
Time.current.to_s(:long_ordinal) => "January 26th, 2019 04:21"
당신은 레일 API 문서에서 사용자 지정을 만드는 방법에 대한 자세한 형식과 컨텍스트를 찾을 수 있습니다.
from https://stackoverflow.com/questions/165170/in-ruby-on-rails-how-do-i-format-a-date-with-the-th-suffix-as-in-sun-oct-5 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 동적 조건 has_many 레일 (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] 이 속성 또는 메서드를 지원하지 않는 개체 윈도우 64 비트 레일 (0) | 2020.02.05 |
[RUBY-ON-RAILS] Heroku가에서 작업을 실행 2.3 스타일의 플러그인과 중단 경고 레일 (0) | 2020.02.04 |
[RUBY-ON-RAILS] 루비 온 레일즈는 클래스와 필드를 선택 form_for (0) | 2020.02.04 |
[RUBY-ON-RAILS] 레일 - 고안 - 처리 - devise_error_messages을 (0) | 2020.02.04 |