2011-01-02 20 views
2

年の情報がない12/25のような日付を表す方法はありますか?より良い方法がない限り、[month, year]の配列を使用することを考えています。Rubyの年月日は?

+3

「2/29」または「3/1'」を使用して年? –

+0

私はあなたが最高の答えとしてstrftimeを使うことを認めたのを見ました。サイトhttp://www.foragoodstrtime.comは、日付書式設定文字列を生成する簡単な方法です。 –

+0

マイク、あなたはサイトのURLに誤字がありました。それはforagoodstrftime.comする必要があります私は前にそのサイトを見たことがなかった、ありがとう! –

答えて

3

あなた Dateクラスを使用して、ハードうるう年に年を設定できます。これは、2つの日付の間で '距離'計算を実行する必要がある場合に便利です(あなたが年の境界を越える必要はないと仮定したときに、何年か間違って2/29を越える)。

#strftimeを使用して、必要に応じて(たとえば)「Mar-3」として日付を表示できるので便利かもしれません。

しかし、使用方法によっては、ペア配列や何かYearlessDate = Struct.new(:month,:day)のように明示的に表現していると思います。そういう意味では、あなたは上記のようなミスをするように誘惑されません。

しかし、実際には年に関連付けられていない日付はありませんでした。これがあなたに当てはまると仮定すると、@ SeanHillの答えは最高です:年の情報を保持しますが、それが適切でないときにユーザーに表示しないでください。

1

Timeクラスのstrftime関数を使用します。 (あなたが望んでいた場合は、2月29日を表すことができるように)

time = Time.now 
time.strftime("%m/%d") 
0

年を指定しないで日付を表す最も正しい方法は、001と365の間のFixnumです。日付に変換せずに比較を行うことができます。必要に応じてDate.ordinal

+2

しかし、うるう年で、あなたの日付が2月29日の場合はどうなりますか? –

関連する問題