質問

これは少し奇妙ですが、NSCALENDAR(または任意のコンポーネント)を使用して、次の「月の最初の火曜日」の日付がどうなるかを把握することは可能ですか?

たとえば、今日は2010年3月25日木曜日です。次の「月の最初の火曜日」は4月6日になります。同様に、4月1日に次の「月の最初の火曜日」を探していた場合、それはまだそうです4月6日。

これをどうやってやるの?

どうもありがとう!!!!!

役に立ちましたか?

解決

以下のコードは、特定の月/年の組み合わせの最初の火曜日を計算します。書かれています マクルビー それは私がそれを試したばかりですが、それを適切な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];

サンプルと詳細情報については、これを参照してください ガイド

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top