2016-07-13 12 views
-1

textFields開始時刻と終了時刻をViewControllerに設定しました。ユーザがtextFieldを選択すると、カレンダーから日付を選択できます。選択した日付はTextFieldに格納され、 YYYY-MM-ddという形式です。テキストフィールドの日付を比較します

ViewControllerに計算ボタンを実装しました.2つのTextFieldがいっぱいであれば、私はいくつかの作業をする必要があります。 2 textFieldが充填され、TextFieldから大きいいる

、私はからTextField日付がTextFieldより大きいときに警告を表示します。

どうすれば比較できますか?私はあなたがこの機能を探していると思う

+0

なぜこれらのフィールド 'UIDatePicker'のオブジェクトではありませんか? – Droppy

答えて

0
NSDateFormatter * df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat: @"yyyy-MM-dd"]; 
    NSDate * dt1 ; 
    NSDate * dt2 ; 
    dt1 = [df dateFromString: txt1.text]; 
    dt2 = [df dateFromString: txt2.text]; 
    NSComparisonResult result = [dt1 compare: dt2]; 
    switch (result) { 
     case NSOrderedAscending: 
      NSLog(@"%@ is greater than %@", dt2, dt1); 
      break; 
     case NSOrderedDescending: 
      NSLog(@"%@ is less %@", dt2, dt1); 
      break; 
     case NSOrderedSame: 
      NSLog(@"%@ is equal to %@", dt2, dt1); 
      break; 
     default: 
      NSLog(@"erorr dates %@, %@", dt2, dt1); 
      break; 
    } 

希望....

+0

@ Cyph3rあなたは答えをチェックしましたか? –

0

..私は、これはあなたを助けることを願っています

NSCalendar* currentCalendar = [NSCalendar currentCalendar]; 
    NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; 
    NSDateComponents *differenceComponents = [currentCalendar components:unitFlags fromDate:postdate toDate:[NSDate date] options:0]; 
    NSInteger yearDifference = [differenceComponents year]; 
    NSInteger monthDifference = [differenceComponents month]; 
    NSInteger dayDifference = [differenceComponents day]; 
    NSInteger hourDifference = [differenceComponents hour]; 
    NSInteger minuteDifference = [differenceComponents minute]; 

。これがお手伝いします

0

ファーストこの2つのテキストフィールドの文字列の日付をNSDateオブジェクトに変換し、日付を比較するにはcompare:の方法を使用する必要があります。

NSString *dateString1 = @"2016-05-31"; //First text field value 
NSString *dateString2 = @"2016-05-31"; //Second text field value 
NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate *date1=[dateFormatter dateFromString:dateString1]; 
NSDate *date2=[dateFormatter dateFromString:dateString2]; 

if ([date1 compare:date2] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 
} else if ([date1 compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 
} else { 
    NSLog(@"dates are the same"); 
} 
+0

@ user3182143、なぜ自分のコードを削除するのですか?このコードは私によって生成されました。 –

+0

了解。その後、私の答えを見て待ってください。 – user3182143

+0

それは私によっても生成されます – user3182143

1

完璧なソリューション

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 

NSString *textFieldDateString1 = @"2016-07-14"; 
NSString *textFieldDateString2 = @"2016-07-15"; 

NSDate *date1 = [dateFormatter dateFromString:textFieldDateString1]; 
NSDate *date2 = [dateFormatter dateFromString:textFieldDateString2]; 

if ([date1 compare:date2] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 
} else if ([date1 compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 
} else { 
    NSLog(@"dates are the same"); 
} 

印刷結果は

date1 is earlier than date2 

Date Comparision

Compare Two dates

+0

日付文字列が日付書式に準拠していないと、この*がクラッシュする可能性があります。結局のところ完璧ではない。あなたの前に同じ回答を投稿した人もいるので、あなたの答えが何を追加するのかははっきりしません。 – Droppy

+0

どのようにクラッシュすることができますか?私の答えを試してください。 – user3182143

+0

私はここで簡単な答えをuserに与えました。サーバーから日付を取得すると、まず文字列にしなければなりません。その後、日付に変換して2つの日付を直接比較できます。 – user3182143