0

2つの日付を比較していますが、2つの日付を文字列変数に入力すると機能しますが、これらの値をデータ比較メソッドに渡すと機能しないのはなぜですか?

これは私が使用しているコードですか?

NSString *dateString =@"2013-05-12 22:10:02";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:MM:SS"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];



NSString *dateString1 = @"2013-03-04 07:59:08";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:MM:SS"];
NSDate *dateFromString1 = [[NSDate alloc] init];
// voila!
dateFromString1 = [dateFormatter dateFromString:dateString1];

if ([dateFromString compare:dateFromString1] == NSOrderedDescending)
{
    NSLog(@"1 is later than 2");

} else if ([dateFromString compare:dateFromString1] == NSOrderedAscending)
{
    NSLog(@"1 is earlier than 2");

} else
{
    NSLog(@"dates are the same");

}

**メソッドに日付 (nsstring 形式) を渡す場合

(int)compareDate:(NSString *)date1:(NSString *)date2 

その方法で私は上記の比較コードを書いたので、この方法を次のように呼び出しています

[self compareDate:date1:date2]

そして、私は常に「日付は同じ」値を取得しています???? 日付を手動で入力すると、正確な答えが得られます??それはなぜですか?**

4

2 に答える 2

2

コードを以下のコードに置き換えます。「mm」形式は分、「MM」は月を表します。秒には「SS」ではなく「ss」を使用します。日付フォーマッタの詳細については、Apple のドキュメントを参照してください。

 NSString *dateString =@"2013-05-12 22:10:02";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    // this is imporant - we set our input date format to match our input string
    // if format doesn't match you'll get nil from your string, so be careful
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *dateFromString = [[NSDate alloc] init];
    // voila!
    dateFromString = [dateFormatter dateFromString:dateString];



    NSString *dateString1 = @"2013-03-04 07:59:08";
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    // this is imporant - we set our input date format to match our input string
    // if format doesn't match you'll get nil from your string, so be careful
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *dateFromString1 = [[NSDate alloc] init];
    // voila!
    dateFromString1 = [dateFormatter dateFromString:dateString1];

    if ([dateFromString compare:dateFromString1] == NSOrderedDescending)
    {
        NSLog(@"1 is later than 2");

    } else if ([dateFromString compare:dateFromString1] == NSOrderedAscending)
    {
        NSLog(@"1 is earlier than 2");

    } else
    {
        NSLog(@"dates are the same");

    }
于 2013-06-05T07:11:10.810 に答える
1

問題は日付フォーマッタにあります。分の代わりに、秒のmm代わりに使用してください。MMssSS

[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
于 2013-06-05T07:11:19.007 に答える