1

人を表す私のクラスには、その人の年齢を計算するメソッドがあります。

@interface Student : NSObject

@property (strong) NSDate *dob;

// This method will work out the person's age in calendar years
- (NSDateComponents*)ageCalculation:(NSDate*)dob;

これがクラス実装ファイルです

@implementation Student

- (NSDateComponents*)ageCalculation:(NSDate*)dob {
    NSDate *now = [NSDate date];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit;
    NSDateComponents *components = [calendar components:units 
                                               fromDate:dob 
                                                 toDate:now   
                                                options:0];
    return components;
}

@end

ただし、これを正しく行っているかどうかはわかりません。

Student *student1 = [[Student alloc] init];
[student1 setDob:aDateOfBirth];
NSDateComponents *ageComponents = [student1 ageCalculation:aDateOfBirth];

このメソッドの結果をどうすればよいですか? ageCalculation:すでに設定した日付を使用するにはどうすればよいですか?

4

3 に答える 3

5

注意すべき点がいくつかあります。NSDateComponentsまず第一に、年齢を計算するためのコードは問題ありませんが、年齢だけでなく、なぜ戻ってくるのか理解できません。

これが私がそれを行う方法です

- (NSInteger)age {
    NSDate *today = [NSDate date];
    NSDateComponents *ageComponents = [[NSCalendar currentCalendar]
                                       components:NSYearCalendarUnit
                                       fromDate:self.dob
                                       toDate:today
                                       options:0];
    return ageComponents.year;
}

コンポーネントのみに関心があるyearため、代わりにそれを返しNSDateComponentsます。self.dob引数の代わりに使用すると、以前に設定した日付が取得されます。

于 2013-10-19T18:00:29.293 に答える
-1

年齢を文字列として返す単純なメソッドを作成しました。

-(NSString *) getAge:(NSDate *)dateOfBirth {

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierIndian];
    NSDateComponents *components = [calendar components:NSYearCalendarUnit
                                               fromDate:dateOfBirth
                                                 toDate:[NSDate date]
                                                options:0];

    return [NSString stringWithFormat:@"%li",components.year];
    }

ノート

  1. これはインドのカレンダーを使用しています- 必要に応じて変更してください。
  2. を呼び出しますNSString *yearsOldinString = [self getAge:dateOfBirth];。ここで、dateOfBirth は NSDate 形式で個人の生年月日を表します。
于 2016-04-04T05:33:34.970 に答える