25

重複の可能性:
iPhoneで時差を取得する方法

JSON フィードから日付と時刻を取得しています。フィードから取得した日付と今日の日付と時刻の差を見つける必要があります。どうすればこれを行うことができますか?

フィードから取得した日付から現在の日付を減算する必要があることはわかっていますが、その方法がわかりません。

元:

フィードからの日付:Date: 2011-06-10 15:00:00 +0000 今日:Date: 2011-06-10 14:50:00 +0000

その差が 10 分であることを表示する必要があります。

ありがとう!

4

3 に答える 3

56

NSDateを使用して文字列から2つのNSDateオブジェクトを作成し、を使用し-dateWithString:て2つのNSdateオブジェクトの差を取得します。

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];
于 2011-06-10T13:01:54.140 に答える
4

NSDate比較を試みる前に、入力日付をオブジェクトに変換する必要があります。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"];
NSDate *startDate = [dateFormatter dateFromString:yourJSONDateString];
NSDate *endDate = [NSDate date];

CGFloat minuteDifference = [endDate timeIntervalSinceDate:startDate] / 60.0;

フォーマッタは、UTC オフセットが常にゼロであると想定します。これが当てはまらない場合は、使用できる他の形式コードについて、 Microsoft の日付形式文字列のページを参照してください。

--

編集:dateWithString他の人が使用した方法は、あなたの状況で使用する方が良いでしょうが、取得している日付フォーマット文字列が正確でない場合は、日付フォーマッタが必要です。日付を正しい形式で送信する API を使用したことがないと思います。おそらく運が悪かっただけです :-(.

于 2011-06-10T13:08:05.003 に答える
0

NSDate以下のコードから、2つのオブジェクトを比較するためのアイデアが得られます。

NSDate *dateOne = [NSDate dateWithString:@"2011-06-10 15:00:00 +0000"];
NSDate *dateTwo = [NSDate dateWithString:@"2011-06-10 14:50:00 +0000"];

switch ([dateOne compare:dateTwo])
{
    case NSOrderedAscending:
         NSLog(@”NSOrderedAscending”);
         break;
    case NSOrderedSame:
        NSLog(@”NSOrderedSame”);
        break;
    case NSOrderedDescending:
       NSLog(@”NSOrderedDescending”);
       break;
}
于 2011-06-10T13:01:53.210 に答える