1

iPhoneで週番号を取得しようとしています。このコードを使用しています

NSNumber* getWeek() {
    NSDate *currDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"w.ee"];
    NSString *dateString = [dateFormatter stringFromDate:currDate];
    NSNumberFormatter *weekNumber = [[NSNumberFormatter alloc] init];
    [weekNumber setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *week = [weekNumber numberFromString:dateString];
    [weekNumber release];
    return week;
 }

ただし、結果が異なります。シミュレーターでは問題ありませんが、iPhone で実行すると「0」になりました IOS 5.0.1

何か役に立ちますか?

4

1 に答える 1

2

週番号に文字列を使用することは、この種の情報を取得する最良の方法ではありません。この種の計算用に特別に設計されていますNSCalendarNSDateComponents

NSDate *currDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSWeekOfYearCalendarUnit|NSWeekdayCalendarUnit fromDate:currDate];
NSLog(@"%d %d", components.weekOfYear, components.weekday);

例に見られるように、calendar 呼び出し (3 行目) でコンポーネントのリストを指定できます。指定されたコンポーネントのみがオブジェクトに入力されることが保証されNSDateComponentsます。

于 2012-07-25T12:01:34.820 に答える