Мне нужно проверить конкретную дату, если она была передана или нет, и если она будет передана, она будет проверяться на массив даты, чтобы увидеть, что является ближайшим ,PHP: проверка даты по массиву дат для получения ближайшей даты
Я начал, но
Код:
<?php
function getCurrDate ($c_id){
// Fetch the course date
$course_nxt_date = "2013-02-03";
// fetch current date
$today = date("Y-m-d");
// Check if course date is in the future
if($course_nxt_date > $today){
$course_date = $course_nxt_date;
return $course_date;
}
// Check if course date is exactly today
elseif($course_nxt_date == $today){
$course_date = $course_nxt_date;
return $course_date;
}
// Check if course date is passed
else{
// Since course date is passed, get an array of future dates from database
$all_course_dates_query = @mysql_query("select * from pub_calendar_dates where course_id = '$c_id' order by course_date asc");
//Loop through the array
$all_course_dates_arr = array();
while ($all_course_dates_row = @mysql_fetch_assoc($all_course_dates_query)){
// assign each variable in the $all_course_dates_row to a new array $all_course_dates_arr
$all_course_dates_arr[] = $all_course_dates_row['course_date'];
}
// This is where I became blank on what to do next and Im stucked...Need help from here
return $course_date;
}
}
?>
Более подробная информация:
если $ course_nxt_date будет принят, он будет проверяться на некоторые существующие будущие даты, для тот же курс, где-то в конкретной таблице базы данных. При проверке $ course_nxt_date против массива $ all_course_dates_arr [], мне нужно будет получить ближайшую дату до $ course_nxt_date
Example of dates that could be in the array - $all_course_dates_arr[]:
$all_course_dates_arr[0] = "2013-01-25";
$all_course_dates_arr[1] = "2013-04-08";
$all_course_dates_arr[2] = "2013-06-13";
$all_course_dates_arr[3] = "2013-08-03";
$all_course_dates_arr[4] = "2013-02-17";
С
$course_nxt_date = "2013-02-03";
Функция должна вывести ближайшие даты, как показано ниже :
echo getCurrDate(18);
Output - 2013-02-17
Я буду рад получить помощь в этом ... Спасибо!
Если вы используете [временные метки эпохи] (http://en.wikipedia.org/wiki/Epoch), вам может быть проще сравнить значения. Вы можете использовать что-то похожее на [this] (http://stackoverflow.com/a/6147488/558021), чтобы получить самое близкое совпадение. – Lix
Я думаю, было бы проще использовать 'DATEDIFF' в вашем запросе только для получения ближайшей даты из базы данных. – hsan
Использование timestamp of date library позволит вам найти разницу между двумя днями. Для этого вам нужно будет настроить пользовательскую функцию –