これは少し奇妙ですが、NSCalendar(またはそれに関しては任意のコンポーネント)を使用して、次の「月の最初の火曜日」の日付を把握することは可能ですか?
たとえば、今日は2010年3月25日木曜日です。次の「月の最初の火曜日」は4月6日です。同様に、次の「月の最初の火曜日」を4月1日に探している場合は、次のようになります。 4月6日。
これをどのように行いますか?
どうもありがとう!!!!!
これは少し奇妙ですが、NSCalendar(またはそれに関しては任意のコンポーネント)を使用して、次の「月の最初の火曜日」の日付を把握することは可能ですか?
たとえば、今日は2010年3月25日木曜日です。次の「月の最初の火曜日」は4月6日です。同様に、次の「月の最初の火曜日」を4月1日に探している場合は、次のようになります。 4月6日。
これをどのように行いますか?
どうもありがとう!!!!!
以下のコードは、特定の月/年の組み合わせの最初の火曜日を計算します。それは私が試したばかりなのでMacRubyで書かれていますが、適切なObjective-Cに変換するのに問題はないはずです。構文が異なります(MacRubyがアイデアをすばやく試すのが大好きです)。
dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4
dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month
cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"
与えられた日付から「次の最初の火曜日」を決定するのはあなたに任せます。最初に現在の日付の月の計算を行い、結果が過去の場合は次の月にもう一度計算します。-[NSCalendar components:fromDate:]
特定のNSDateの月/日のコンボを取得するために使用します。
残念ながら、このコードの無能力を確認することはできませんが、次のように表示されるはずです。
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];
サンプルと詳細情報については、このガイドを参照してください