1

このメソッドを使用して、現在の週の最初と最後の日を取得しています。

NSDate *weekDate = [NSDate date];
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *currentComps = [myCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:weekDate];
int ff = currentComps.weekOfYear;
NSLog(@"1  %d", ff);

[currentComps setWeekday:1]; // 1: sunday
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7]; // 7: saturday
NSDate *lastDayOfTheWeek = [myCalendar dateFromComponents:currentComps];

NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];
myDateFormatter.dateFormat = @"dd/MM/yyyy";
NSString *firstStr = [myDateFormatter stringFromDate:firstDayOfTheWeek];
NSString *secondStr = [myDateFormatter stringFromDate:lastDayOfTheWeek];

NSLog(@"first - %@ \nlast - %@", firstStr, secondStr);

そして、次の週の最初と最後の日、そして今から2週間後に何を変更する必要があるか知りたいですか?

4

2 に答える 2

4

次の週を取得するには、 に 7 日を追加しfirstDayOfTheWeekてからlastDayOfTheWeek.

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:7];
NSDate *firstDayOfNextWeek = [myCalendar dateByAddingComponents:comps toDate:firstDayOfTheWeek options:0];

このコードは、週 7 日を想定しています。この仮定を実際の週の長さを取得するコードに置き換えるのが理想的です。

補足: あなたのコードは、週が日曜日から始まることを前提としています。多くのロケールでは、月曜日などの他の日に週が始まります。変化する:

[currentComps setWeekday:1];

に:

[currentComps setWeekday:[myCalendar firstWeekday]];

次に、 の計算lastDayOfTheWeekを単純に に 6 日を加算するように変更しますfirstDayOfWeek

于 2013-03-09T18:36:43.670 に答える
-1

現在の現在の週日のインデックスを返す以下のコードを使用します。たとえば、今日が土曜日の場合、7 は週の最終日を意味します。

-(int)currentdayweeklynumber{

NSDate *CurrentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];// you can use your format.

//Week Start Date 
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:CurrentDate];
int dayofweek = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:CurrentDate] weekday];
NSLog(@" dayofweek=%d",dayofweek);
return dayofweek;

}

この数値を使用して、加算または減算して、週の最初または最後を取得します。これを使用して、単純な計算だけで来週の開始日と終了日を取得することもできます。

于 2013-03-09T18:37:42.060 に答える