[RUBY-ON-RAILS] 레일의 기본 날짜 형식은 (는 DDMMYYYY 할 필요)
RUBY-ON-RAILS레일의 기본 날짜 형식은 (는 DDMMYYYY 할 필요)
레일은 하루 종일 형성과 내가 일한지 난 그냥 무작위로 그것을 테스트하고 날짜 25/12/2009을 시도하고 그것은 큰 오류를 내놓았다.
일 / 월 / 년 : 내가 레일 대신 영국 스타일의 미국 날짜 모드 (월 / 일 / 년)로 설정되어 있는지 실현이 점에 있었다.
어떻게 자동으로 일 / 월 / 년 형식의 모든 날짜를 다루는 레일을 설정할 수 있습니까?
해결법
-
==============================
1.설정 파일에서 : 설정 / environment.rb에 "
설정 파일에서 : 설정 / environment.rb에 "
my_date_formats = { :default => '%d/%m/%Y' } ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(my_date_formats) ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(my_date_formats)
출처: http://thedevelopercorner.blogspot.com/2009/03/change-default-date-format-in-ruby-on.html
-
==============================
2.이제 직접 Date 클래스를 수정 레일 것을 @ 크리스 Ballance의 솔루션 노트를 사용하는 경우에는 솔루션 초기화되지 않은 상수의 ActiveSupport의 오류가 발생합니다 그래서.
이제 직접 Date 클래스를 수정 레일 것을 @ 크리스 Ballance의 솔루션 노트를 사용하는 경우에는 솔루션 초기화되지 않은 상수의 ActiveSupport의 오류가 발생합니다 그래서.
보다: 초기화되지 않은 상수의 ActiveSupport :: CoreExtensions
업데이트 된 인수 :
my_date_formats = { :default => '%d/%m/%Y' } Time::DATE_FORMATS.merge!(my_date_formats) Date::DATE_FORMATS.merge!(my_date_formats)
-
==============================
3.당신은 국제화를 사용하여 날짜 형식을 변경할 수 있습니다 (I18N)
당신은 국제화를 사용하여 날짜 형식을 변경할 수 있습니다 (I18N)
이 단지 추가 (또는 변경) 당신의 설정 / 로케일 / en.yml :
en: date: order: - :day - :month - :year
-
==============================
4.해당 솔루션은 여전히 너무 우아한 아니지만 당신은이 같은 뭔가를 더 찾고 있습니다.
해당 솔루션은 여전히 너무 우아한 아니지만 당신은이 같은 뭔가를 더 찾고 있습니다.
http://source.mihelac.org/2006/9/13/parsing-european-date-format-in-ruby-rails
-
==============================
5.업데이트 국제화 ...
업데이트 국제화 ...
date: formats: default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y"
-
==============================
6.나는 명시 적으로 내가하고 싶은 일을하고, 어디에서나들을 사용 getter와 mydatefield_formatted 이름 세터를 추가하여이 문제를 해결했다. 내가 여기를 떠날 줄 알았는데, 그래서 아마 이유의 쇼핑 목록이 꽤 맘이 작업을 수행하지만하지.
나는 명시 적으로 내가하고 싶은 일을하고, 어디에서나들을 사용 getter와 mydatefield_formatted 이름 세터를 추가하여이 문제를 해결했다. 내가 여기를 떠날 줄 알았는데, 그래서 아마 이유의 쇼핑 목록이 꽤 맘이 작업을 수행하지만하지.
응용 프로그램 / 모델 / mymodel.rb
class Mymodel < ActiveRecord::Base include ValueFormatters add_value_formatters etc. end
lib 디렉토리 / value_formatters.rb
module ValueFormatters extend ActiveSupport::Concern module ClassMethods def add_value_formatters columns.each do |column| case column.type when :datetime define_method("#{column.name}_formatted") { General.format_datetime(self.read_attribute(column.name)) } define_method("#{column.name}_formatted=") {|value| self.update_attribute(column.name, General.parse_datetime(value)) } when :date define_method("#{column.name}_formatted") { General.format_date(self.read_attribute(column.name)) } define_method("#{column.name}_formatted=") {|value| self.update_attribute(column.name, General.parse_date(value)) } when :boolean define_method("#{column.name}_formatted") { General.format_boolean(self.read_attribute(column.name)) } define_method("#{column.name}_formatted=") {|value| self.update_attribute(column.name, General.parse_boolean(value)) } else # do nothing end unless self.class.respond_to?("#{column.name}_formatted") end end end end
lib 디렉토리 / general.rb
class General def self.parse_date(value, end_of_day = false) result = nil begin if value.present? if value.length == 8 result = DateTime.strptime(value, '%d/%m/%y') if result.year > Time.new.year + 1 result = DateTime.new(result.year - 100, result.month, result.day) end else result = DateTime.strptime(value, '%d/%m/%Y') end end rescue Exception=>e # end result = result + 23.hours + 59.minutes + 59.seconds if result && end_of_day result end def self.parse_datetime(value) result = nil begin if value.present? result = DateTime.strptime(value, '%d/%m/%Y %H:%M') result = nil if result < 100.years.ago end rescue Exception=>e # end result end def self.format_date(value) value.present? ? value.strftime('%d/%m/%Y') : '' end def self.format_datetime(value) value.present? ? value.strftime('%d/%m/%Y at %H:%M') : '' end def self.format_boolean(value, default = nil) value = default if value == nil case value when true 'Yes' when false 'No' else 'Unspecified' end end def self.parse_boolean(value, default = false) case value.to_s.downcase when 'true' when 'yes' when '1' when 'on' true when 'false' when 'no' when '0' when 'off' false else default end end end
from https://stackoverflow.com/questions/1610485/default-date-format-in-rails-need-it-to-be-ddmmyyyy by cc-by-sa and MIT license