简体   繁体   中英

nearest date in php strtotime

I have several date(strtotime) in a Variable and want the first nearest date that is after the specified date(my date) with php. what do i do?

Variable:

$varD = "1481691600,1482642000,1482037200";

my date:

1481778000 => (2016-12-15)

several date(strtotime):

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

result:

1482037200 => (2016-12-18)
$varD = "1481691600,1482037200,1482642000";
$myDate = "1481778000";

After you explode the string of timestamps ( $varD ), you can filter them and return the minimum value of the result. Here is one way to do that using array_filter and min .

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

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

But if you already know that the timestamps in the string will be in ascending order, it will probably be faster not to convert the whole thing to an array and sort through it. You can use strtok to go through it piece by piece and just stop as soon as you get to a timestamp larger than your target.

$ts = strtok($varD, ',');
while ($ts !== false) {
    $ts = strtok(',');
    if ($ts > $myDate) break;
}
$firstDateAfterYours = $ts;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM