ultima servidor seleccionar registro reciente obtener mayor mas hora fecha exacta con actual php arrays date date-comparison

php - servidor - Obtener la fecha más reciente de una serie de fechas



obtener registro con fecha mas reciente sql (11)

Aquí está mi sugerencia:

$most_recent = 0; foreach($array as $key => $date){ if( strtotime($date) < strtotime(''now'') && strtotime($date) > strtotime($array[$most_recent]) ){ $most_recent = $key; } } print $array[$most_recent]; //prints most recent day

Tengo la siguiente serie de fechas

array(5) { [0]=> string(19) "2012-06-11 08:30:49" [1]=> string(19) "2012-06-07 08:03:54" [2]=> string(19) "2012-05-26 23:04:04" [3]=> string(19) "2012-05-27 08:30:00" [4]=> string(19) "2012-06-08 08:30:55" }

y me gustaría saber la fecha más reciente como en: la fecha más cercana a la de hoy.

¿Cómo puedo hacer eso?


Creo que el siguiente es el código más corto para encontrar la fecha reciente. puede modificarlo para encontrar el índice de la fecha reciente o para encontrarlo en el futuro o en el pasado.

$Dates = array( "2012-06-11 08:30:49", "2012-06-07 08:03:54", "2012-05-26 23:04:04", "2012-05-27 08:30:00", "2012-06-08 08:30:55", "2012-06-22 07:45:45" ); $close_date = current($Dates); foreach($Dates as $date) if( abs(strtotime(''now'') - strtotime($date)) < abs(strtotime(''now'') - strtotime($close_date))) $close_date = $date; echo $close_date;


Esa es mi variante. Funciona con fecha en el futuro.

$Dates = array( "2012-06-11 08:30:49", "2012-06-07 08:03:54", "2012-05-26 23:04:04", "2012-05-27 08:30:00", "2012-06-08 08:30:55", "2012-06-12 07:45:45" ); $CloseDate = array(); $TimeNow = time(); foreach ($Dates as $Date) { $DateToCompare = strtotime($Date); $Diff = $TimeNow - $DateToCompare; if ($Diff < 0) $Diff *= -1; if (count($CloseDate) == 0) { $CloseDate[''Date''] = $Date; $CloseDate[''Diff''] = $Diff; continue; } if ($Diff < $CloseDate[''Diff'']) { $CloseDate[''Date''] = $Date; $CloseDate[''Diff''] = $Diff; } } var_dump($CloseDate);


Haga un ciclo, convierta los valores a la fecha y almacene el más reciente, en una var.

$mostRecent= 0; foreach($dates as $date){ $curDate = strtotime($date); if ($curDate > $mostRecent) { $mostRecent = $curDate; } }

algo así ... tienes la idea Si quieres lo más reciente ANTES de hoy:

$mostRecent= 0; $now = time(); foreach($dates as $date){ $curDate = strtotime($date); if ($curDate > $mostRecent && $curDate < $now) { $mostRecent = $curDate; } }


Ordene la matriz por fecha y luego obtenga el valor frontal de la matriz.

$dates = array(5) { /** omitted to keep code compact */ } $dates = array_combine($dates, array_map(''strtotime'', $dates)); arsort($dates); echo $dates[0];


Prueba esto:

public function getLargerDate(array $datas) { $newDates = array(); foreach($datas as $data){ $newDates[strtotime($data)] = $data; } return $newDates[max(array_keys($newDates))]; }


Use max() , array_map() y strtotime() .

$max = max(array_map(''strtotime'', $arr)); echo date(''Y-m-j H:i:s'', $max); // 2012-06-11 08:30:49


Intenta esto funciona al 100%

function getRecentDate($date_list,$curDate){ $curDate = strtotime($curDate); $mostRecent = array(); foreach($date_list as $date){ $diff = strtotime($date)-$curDate; if($diff>0){ $mostRecent[$diff] = $date; } } if(!empty($mostRecent)){ ksort($mostRecent); $mostRecent_key = key($mostRecent); if($mostRecent_key){ return $mostRecent[$mostRecent_key]; } }else{ return false; } } $date_list = array(''15-05-2015'',''14-01-2015'',''18-03-2015'',''20-10-2016'',''12-12-2014'',''12-12-2015''); $curDate = ''14-01-2015''; $get_recent = getRecentDate($date_list,$curDate); if($get_recent){ echo $get_recent; }else{ echo ''No recent date exists''; }


$DatesList = array( ''2015-05-19'', ''2015-09-17'', ''2015-09-24'', ''2015-10-02'', ''2015-10-23'', ''2015-11-12'', ''2015-12-25'' ); $counter = 0; $currentDate = date("Y-m-d"); foreach ($DatesList as $dates) { if($dates >= $currentDate) { $storeDates[$counter] = $dates; $counter++; } } $closestDate = current($storeDates); echo $closestDate;


$arrayy = array( "2012-06-11 08:30:49","2012-06-07 08:03:54","2012-05-26 23:04:04", "2012-05-27 08:30:00","2012-06-08 08:30:55" ); function getMostRecent($array){ $current = date("Y-m-d h:i:s"); $diff1 = NULL; $recent = NULL; foreach($array as $date){ if($diff = strcmp($current,$date)){ if($diff1 == NULL){ $diff1 = $diff; $recent = $date; } else{ if($diff < $diff1){ $diff1 = $diff; $recent = $date; } } } } return $recent; }


$dates = [ "2012-06-11 08:30:49" ,"2012-06-07 08:03:54" ,"2012-05-26 23:04:04" ,"2012-05-27 08:30:00" ,"2012-06-08 08:30:55" ]; echo date("Y-m-d g:i:s",max(array_map(''strtotime'',$dates)));