0

現在の週の月曜日から木曜日の日付を取得しようとしています。しかし、何らかの理由で、このコードでは、今週の日付と前の週の日付が混在しています。

これは奇妙な方法かもしれませんが、コードの何が問題なのか本当にわかりません。

誰かが日付を取得するより良い方法を持っている場合は、ヒントを教えてください:)

私のコード:

NSDate *today = [NSDate date];


//Change first weekday of the week

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
gregorian.firstWeekday = 2;

NSCalendar *gregorian1 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
gregorian1.firstWeekday = 3;

NSCalendar *gregorian2 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
gregorian2.firstWeekday = 4;

NSCalendar *gregorian3 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
gregorian3.firstWeekday = 5;




NSDateComponents *components = [gregorian components:NSWeekCalendarUnit fromDate:today];

NSUInteger weekOfYear = [components weekOfYear];

//Give the date of the first week day

NSDate *mondaysdate = nil;
[gregorian rangeOfUnit:NSWeekCalendarUnit startDate:&mondaysdate interval:NULL forDate:today];
NSDate *tuesdaysdate = nil;
[gregorian1 rangeOfUnit:NSWeekCalendarUnit startDate:&tuesdaysdate interval:NULL forDate:today];

NSDate *wednesdaysdate = nil;
[gregorian2 rangeOfUnit:NSWeekCalendarUnit startDate:&wednesdaysdate interval:NULL forDate:today];
NSDate *thursdaysdate = nil;
[gregorian3 rangeOfUnit:NSWeekCalendarUnit startDate:&thursdaysdate interval:NULL forDate:today];


//Making the dates into string

NSDateFormatter *formatter2 = [[NSDateFormatter alloc]init];
formatter2.dateFormat = @"yyyy/MM/dd";

NSString *monday = [formatter2 stringFromDate:mondaysdate];
NSString *tuesday = [formatter2 stringFromDate:tuesdaysdate];
NSString *wednesday = [formatter2 stringFromDate:wednesdaysdate];
NSString *thursday = [formatter2 stringFromDate:thursdaysdate];
4

2 に答える 2

0
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorianCalendar components:(NSYearCalendarUnits | NSMonthCalendarUnits | NSWeekCalendarUnits | NSWeekdayCalendarUnits) fromDate:[NSDate date]];

comps.weekday = 2;
NSDate *monday = [gregorianCalendar dateFromComponents:comps];

comps.weekday = 3;
NSDate *tuesday = [gregorianCalendar dateFromComponents:comps];

comps.weekday = 4;
NSDate *wednesday = [gregorianCalendar dateFromComponents:comps];

comps.weekday = 5;
NSDate *thursday = [gregorianCalendar dateFromComponents:comps];
于 2012-11-05T22:56:41.153 に答える
0

以下を使用して、曜日を数値として取得できます。これは疑似コードであるため、コンパイルできない可能性がありますが、良いスタートが切れるはずです。数に応じて、他の日付を生成し、後でそれらを文字列として取得できます。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"c"]; //<-  gives you day of week as an integer, 1 for monday, 2 for tuesday, etc

NSDate *today = [NSDate date];
NSInteger dayOfWeek = [[df stringFromDate:today] integerValue];

次に、元の今日の変数に日のオフセットを追加して、他の NSDates を作成します。

その後、フォーマットし直します。

[df setDateFormat:@"yyyy/mm/dd"];
[df stringFromDate:today]; //<-- do this for all the other dates too

[df release]; //<- if you do this method often, consider having the date formatter as global

書式設定については、こちらを参照してください。 http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

于 2012-11-05T22:49:44.523 に答える