2

Rubyを使用して、次の日曜日がその月の第1日曜日、第2日曜日、または第3日曜日であるかどうかをどのように判断できますか?

4

1 に答える 1

3

@ElYusubov-近いですが、完全には正しくありません。

開始点として、分割は7(1週間の日数)である必要があります。ただし、time.dayは1から31までの月の日を与えるため、最初に除算の前に1を減算し、除算の後に1を加算する必要があります。毎月最初の8日間は...

Day number    (Day# - 1) / 7    Week#
----------    --------------    -----
         1      0.0             1
         2      0.14            1
         3      0.29            1
         4      0.43            1
         5      0.57            1
         6      0.71            1
         7      0.86            1
         8      1               2

曜日が何であれ、その週#は、その曜日の最初、2番目などであるかどうかを示します。しかし、あなたは来たる日曜日を望んでいます。

wdayは平日-0から6を与え、0は日曜日を意味します。では、次の日曜日まで何日ありますか?ええと、それはあなたの「来る」の定義に依存しますが、today == Sundayを除外すると、基本的に今日の平日を7から引きます。

Weekday today     Days until next Sunday
-------------     ----------------------
 0 (Sun)           7
 1 (Mon)           6
 2 (Tue)           5
 3 (Wed)           4
 4 (Thu)           3
 5 (Fri)           2
 6 (Sat)           1

「来る」日曜日を今日にする場合は、同じことを行いますが、7をゼロに置き換えます。条件付きチェックを実行するか、モジュロ/剰余演算子を使用できます。

とにかく、次の日曜日が何日先かがわかれば、その日付値を計算し(今日の日付にそれらの日を加算)、最初の方法を使用して、今日ではなくその日付の月の週番号を決定できます(最初の方法( 1を引き、7で割り、1を足します)。

関連する語彙...

Date.wday        0 to 6 (0 = sunday)
Date.day         1 to 31

Rubyを知らないので、コードを提供しようとはしません。

于 2012-09-25T05:05:49.317 に答える