2011-08-17 8 views
1

の月の最初のセット:私はNSDateCompomentsのおかげで/インクリメント、デクリメントされNSDateを使用していNSDate

dateComponents = [[NSDateComponents alloc] init]; 
    self.date = [gregorian dateByAddingComponents:dateComponents toDate:[NSDate date] options:0]; 

...

[dateComponents setDay:1]; 
        self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0]; 
        [dateComponents setDay:0]; 

を、私は設定したいですNSDateを月の初め(そして今年の最初の月も)に設定する日ですが、やり方はわかりません。

ありがとうございます!!!

EDIT:

NSDateComponents *dateComponentsSetFirst = [gregorian components:(NSYearCalendarUnit | 
                   NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:self.date]; 

    switch (self.segmentedControl.selectedSegmentIndex) { 
     case 0: 
      requestTy = @"hours"; 
      break; 
     case 1: 
      requestTy = @"days"; 
      NSLog (@"avant %@",self.date); 
      [dateComponents setDay:1]; 
      self.date = [gregorian dateFromComponents:dateComponentsSetFirst]; 
      [dateComponents setDay:0]; 
      NSLog (@"après %@",self.date); 
      break; 
     case 2: 
      requestTy = @"months"; 
      NSLog (@"before %@",self.date); 
      [dateComponents setMonth:1]; 
      self.date = [gregorian dateFromComponents:dateComponentsSetFirst]; 
      [dateComponents setMonth:0]; 
      NSLog (@"after : %@",self.date); 
      break; 
     default: 
      break; 
    } 

は私に

私はケース1に渡す
2011-08-17 11:23:34.365 e-mars[20942:207] avant 2011-08-17 09:23:30 GMT 
2011-08-17 11:23:34.366 e-mars[20942:207] après 2011-08-16 22:00:00 GMT 

を与えます!

2011-08-17 11:26:05.747 e-mars[20942:207] before 2011-08-16 22:00:00 GMT 
2011-08-17 11:26:05.747 e-mars[20942:207] after : 2011-08-16 22:00:00 GMT 

私はケース2に合格!

+1

'置き換える[dateComponentsのsetDay:1]' '[dateComponentsSetFirst setDay:1]と' – jrturton

+0

ハム.... stuuupid ;-)私は古い日付コンポーネントを使用しようとした... – clement

答えて

2

日付にコンポーネントを追加していません。指定した日付からdateComponentsを初期化し、曜日と月を設定してからdateFromComponentsを取得するだけです。 Apple Date and Time Programming Guide

NSDateComponents *dateComponents = [gregorian components:(NSYearCalendarUnit | 
NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
[dateComponents setDay:1]; 
[dateComponents setMonth:1]; 
self.date = [gregorian dateFromComponents:dateComponents]; 
+0

どうやら、それは動作しません: '(それは1901年12月に私を入れています... ^^ – clement

+0

日付からdateComponentsを初期化しましたか? –

+0

私は自分の最初の投稿を編集しました。私は明らかに動作していません...日付は最初に設定されていません – clement

関連する問題