2016-12-14 22 views
0

私は変数に日付(strtotime)をいくつか持ち、指定された日付(自分の日付)の後ろにある最初の最も近い日付をPHPで返します。私は何をしますか?最も近い日付はPHP strtotime

変数:

$varD = "1481691600,1482642000,1482037200"; 

私の日付:

1481778000 => (2016-12-15) 

いくつかの日付(のstrtotime):

1481691600 => (2016-12-14) 
1482642000 => (2016-12-25) 
1482037200 => (2016-12-18) //result 

結果:

1482037200 => (2016-12-18) 
+1

'、'を展開して日付を配列に取得し、ループオーバーして比較します。ターゲット日付の '>'である 'min'日付を探します。 –

答えて

1
$varD = "1481691600,1482037200,1482642000"; 
$myDate = "1481778000"; 

あなたがexplodeタイムスタンプの文字列($varD)は、あなたがそれらをフィルタリングし、その結果の最小値を返すことができた後。 array_filterminを使用してこれを行う方法があります。

$comp = function($x) use ($myDate) { return $x > $myDate; }; 

$firstDateAfterYours = min(array_filter(explode(',', $varD), $comp)); 

しかし、あなたはすでに文字列でタイムスタンプが昇順になることを知っていれば、それはおそらく配列に全部を変換し、それをソートしないように速くなります。 strtokを使用すると、1つずつ移動し、ターゲットよりも大きなタイムスタンプになるとすぐに停止できます。

$ts = strtok($varD, ','); 
while ($ts !== false) { 
    $ts = strtok(','); 
    if ($ts > $myDate) break; 
} 
$firstDateAfterYours = $ts; 
関連する問題