現在と来週の日付を曜日名で取得したい。
つまり、今日の日付が 2013 年 6 月 28 日 (金曜日) の場合、2013 年 6 月 23 日 (日曜日) から 2013 年 6 月 29 日 (土曜日) までの日付を現在の週として取得します。
来週 は、2013 年 6 月 30 日 (日曜日) から 2013 年 6 月 7 日 (土曜日) までの日付を取得したいと考えています。
これどうやってするの?
ありがとうございました、
現在と来週の日付を曜日名で取得したい。
つまり、今日の日付が 2013 年 6 月 28 日 (金曜日) の場合、2013 年 6 月 23 日 (日曜日) から 2013 年 6 月 29 日 (土曜日) までの日付を現在の週として取得します。
来週 は、2013 年 6 月 30 日 (日曜日) から 2013 年 6 月 7 日 (土曜日) までの日付を取得したいと考えています。
これどうやってするの?
ありがとうございました、
トリックを行うサンプルコードを次に示します。
-(NSArray*)daysThisWeek
{
return [self daysInWeek:0 fromDate:[NSDate date]];
}
-(NSArray*)daysNextWeek
{
return [self daysInWeek:1 fromDate:[NSDate date]];
}
-(NSArray*)daysInWeek:(int)weekOffset fromDate:(NSDate*)date
{
NSCalendar *calendar = [NSCalendar currentCalendar];
//ask for current week
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps=[calendar components:NSWeekCalendarUnit|NSYearCalendarUnit fromDate:date];
//create date on week start
NSDate* weekstart=[calendar dateFromComponents:comps];
if (weekOffset>0) {
NSDateComponents* moveWeeks=[[NSDateComponents alloc] init];
moveWeeks.week=1;
weekstart=[calendar dateByAddingComponents:moveWeeks toDate:weekstart options:0];
}
//add 7 days
NSMutableArray* week=[NSMutableArray arrayWithCapacity:7];
for (int i=1; i<=7; i++) {
NSDateComponents *compsToAdd = [[NSDateComponents alloc] init];
compsToAdd.day=i;
NSDate *nextDate = [calendar dateByAddingComponents:compsToAdd toDate:weekstart options:0];
[week addObject:nextDate];
}
return [NSArray arrayWithArray:week];
}
回答をコピーして貼り付けるつもりでしたが、この投稿にアクセスして読むことをお勧めします: Current Week Start and End Date。やりたいことを叶えるお手伝いをしてくれそうです。
おそらくこのようなもの:
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger weekNumber = [[calendar components: NSWeekCalendarUnit fromDate:now] week];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:now];
[comp setWeek:weekNumber]; //Week number.
int i;
for (i = 1; i < 8; i=i+1){
[comp setWeekday:i]; //First day of the week. Change it to 7 to get the last date of the week
NSDate *resultDate = [gregorian dateFromComponents:comp];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEEE MMMM d, yyyy"];
NSString *myDateString = [formatter stringFromDate:resultDate];
NSLog(@"%@",myDateString);
}
NSCalendar インスタンスを使用して開始 NSDate インスタンスを NSDateComponents インスタンスに変換し、NSDateComponents に 1 日を追加し、NSCalendar を使用してそれを NSDate インスタンスに変換します。終了日に達するまで、最後の 2 つの手順を繰り返します。
NSDate *currentDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:1];
NSDate *nextDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
または、開始日と終了日を見つけます。お気に入り
NSDate *startDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:7];
NSDate *endDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
次に、NSDate nextDate;
for ( nextDate = startDate ; [nextDate compare:endDate] < 0 ; nextDate = [nextDate addTimeInterval:24*60*60] ) {
// use date
}
NSDateComponents
曜日を調べてから、その前後に必要な日付を見つけるために使用します。
うーん、私はこれなどの専門家ではありませんが、これを行うためのばかげた方法は、最初に からの曜日を認識できるようにすることNSDate
です。次に、ステートメントを追加してから、if ステートメントで日付または日付のそれぞれをif
加算および減算できます。もしくはiosカレンダーにアクセスする方法もあると思います。nslog
printf
わかりましたので、上記はほとんど私が言ったことよりも多くのことを言いました。ええ、私の前の投稿のリンクをチェックしてください。