0

これは私のコードで、2 つの日付の間の日数と月数を完全に返します。2 つの日付の差が正確に 1 年であるように、これを検証したいと思います。たとえば、2013 年 7 月 29 日を開始日として選択し、2014 年 7 月 30 日を終了日として選択した場合、これ以上実行することは許可されません。事前に感謝を助けてください。

    NSString *sta = txtStartdate.text; // This is the start date

    NSString *en =   txtEnddate.text;   //this is end date

    NSDateFormatter *f = [[NSDateFormatter alloc] init];

    [f setDateFormat:@"dd/MM/yyyy"];

    NSDate *startDat = [f dateFromString:sta];

    NSDate *endDat = [f dateFromString:en];

    [f release];

    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar];

    NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit ;

    NSDateComponents *components = [gregorian components:unitFlags
                                                fromDate:startDat
                                                  toDate:endDat options:0];
    NSInteger months = [components month];
    NSInteger days = [components day];
    NSInteger years = [components year];

    NSLog(@"Number of months %d",months);

    NSLog(@"Number of days %d",days);

    NSLog(@"Number of years %d",years);

    [gregorian release];

    if(years < 1 )// This code works fine...i've edited it.. @wain helped
    {
        //

}

4

1 に答える 1

1

に追加NSYearCalendarUnitunitFlags、 を取得しcomponentsたら、 をリクエストできますyear。これは、月や日を数えたり、終了日を計算したりするよりも、閏年を適切に処理します (コンポーネントを使用して日付に 1 年を追加して終了日を取得しない限り)。

于 2013-07-29T07:56:41.023 に答える