Wie formatiere ich ein Datum in rubin einschließen „rd“, wie in „3.“ [Duplikat]

StackOverflow https://stackoverflow.com/questions/1081926

  •  22-08-2019
  •  | 
  •  

Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich mag ein Date-Objekt zu formatieren, so dass ich Strings wie „3. Juli“ oder „1. Oktober“ angezeigt werden kann. Ich kann nicht eine Option in Date.strftime finden die „rd“ und „st“ zu erzeugen. Jeder weiß, wie dies zu tun?

War es hilfreich?

Lösung

Ich werde alle anderen Echo, aber ich werde ermutigen nur Sie die activesupport Juwel zum Download, so dass Sie nur es als Bibliothek verwenden können. Sie müssen nicht alle Rails verwenden müssen ordinalize .

% gem install activesupport
...
% irb 
irb> require 'rubygems'
#=>  true
irb> require 'activesupport'
#=>  true
irb> 3.ordinalize
#=>  "3rd"

Andere Tipps

Es sei denn, Sie verwenden Rails , fügen Sie diese ordinalize Verfahren (Code schamlos hob von der Rails-Quelle) zu der Fixnum Klasse

class Fixnum
  def ordinalize
    if (11..13).include?(self % 100)
      "#{self}th"
    else
      case self % 10
        when 1; "#{self}st"
        when 2; "#{self}nd"
        when 3; "#{self}rd"
        else    "#{self}th"
      end
    end
  end
end

Dann formatieren Sie das Datum wie folgt aus:

> now = Time.now
> puts now.strftime("#{now.day.ordinalize} of %B, %Y")
=> 4th of July, 2009
created_at.strftime("#{created_at.day.ordinalize} of %m, %y")

Wird produzieren "4. Juli 2009"

Ich glaube nicht, Ruby hat es, aber wenn Sie Rails haben, versuchen Sie dies: -

puts 3.ordinalize #=> "3rd"

Es scheint, ich bin dieses Thema ein drittes Mal erneuten Besuch, also habe ich mein Kern mit einigen zusätzlichen Kommentare / Nutzung aktualisiert.

https://gist.github.com/alterisian/4154152

Cheers, Ian.

Ich weiß nicht, ob es es so viel macht (welche?) Schneller als Schalter-Fall, aber ich mit den Endungen einen konstant gemacht:

DAY_ENDINGS = ["th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "st"]

Dann verwendet es einfach mögen:

DAY_ENDINGS[date.mday]

Wie ich das Ende innerhalb einer wollte

<span>th</span>

require 'Active'
1.ordinal => 'st'
1.ordinalize => 'erster'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top