2

現在の時刻を比較して、配列から最も近い時刻を見つけたいと思います。(つまり、現在の時刻が午前 10:00 の場合、この場合、午前 9:00、午前 9:50、午前 9:30 の配列があります。これから午前9時50分を取得したい。どうすればこれを達成できますか? 配列内のオブジェクトのインデックス値を変更したくありません。

4

1 に答える 1

2

各値を現在の時刻と比較して配列を解析し、配列内の時刻と現在の時刻の間の秒のデルタと、配列内の値のインデックスを格納します。次のものの時間デルタが小さく、はいであるかどうかをチェックして、値とインデックスを確認します。解析の最後に、最も近いタイムスタンプのインデックスと時間デルタがあります。

やって

NSTimeInterval interval = 3600*24; // just a big number
NSUInteger indexOfDate;
// I didnt checked if the delta can be negative in this case think aboud absolute number

for (NSDate * date in dateArray) {

      if(abs([date timeIntervalSinceDate:[NSDate date]]) < interval) {
           interval = abs([date timeIntervalSinceDate:[NSDate date]]);
           indexOfDate = [dateArray indexOfObject:date];
            }
      }
于 2012-05-25T10:40:11.490 に答える