#php #mysql #date
#php #mysql #Дата
Вопрос:
Я хочу сравнить два значения даты и времени в PHP. Одна дата поступает из MySQL, а вторая — текущая дата. Я хочу запустить некоторый код, когда обе даты совпадают. Я попробовал приведенный ниже код, но условие удовлетворяет любому неверному времени.
$current_datetime = date('Y-m-d H:i');
$send_date = date("Y-m-d H:i", strtotime($row['send_date'])); // suppose $row['send_date']'s value is '2016-10-17 15:00'
if($current_datetime == $send_date){
//I want to run some code here
}else{
}
Что не так с кодом? Я также попытался скрыть обе даты strtotime()
перед сравнением, но это вызвало у меня ту же проблему. Приведенное выше условие удовлетворяет любому времени, даже если обе даты разные.
Комментарии:
1. Как именно вы хотите их сравнить? До нескольких часов?
2. Нет, это не дублирующий вопрос, я прочитал этот вопрос, но не получил ответа на то, что я хочу, поэтому я задал новый.
3. Я хочу сравнить дату и время (часы и минуты). Я не хочу сравнивать секунды.
4. Также вы сравниваете так: $var = $row[‘send_date’]; если ((время()-(60*60*24)) == strtotime($var)){ … }
5. Каков ваш результат
$row['send_date']
Ответ №1:
Попробуйте это :
$current_datetime = date('Y-m-d H:i');
$send_date = date("Y-m-d H:i", strtotime($row['send_date'])); // suppose $row['send_date']'s value is '2016-10-17 15:00'
if(strtotime($current_datetime) == strtotime($send_date)){
//I want to run some code here
}else{
}
Надеюсь, это поможет!!!!
Комментарии:
1. Что вы изменили?. Объясните правильно.
2. @AHJeebon: я преобразовал даты в формат strtotime, потому что это правильный способ сравнения значений дат.
3. @KaushaThakkar: Да, этот код работает нормально для меня. Спасибо
4. @KetanLathiya Спасибо !! не могли бы вы, пожалуйста, поставить ему зеленую галочку 🙂
Ответ №2:
Один из способов — получить временную метку Unix (секунды с момента ‘1970-01-01 00:00:00’ UTC) из MySQL, а затем работать с числами:
$row = get_db_row("SELECT UNIX_TIMESTAMP(send_date) AS send_date_ts
FROM table WHERE $condition");
$hours = (int) ($row['send_date_ts'] / 3600);
$current_hours = (int) (time() / 3600);
if ($hours == $current_hours) {
// current hour
}
Временные метки удобны, потому что:
- нет необходимости учитывать формат;
- операции с числами обычно выполняются быстрее;
- код выглядит чище.
Ответ №3:
Попробуйте это. На моем сервере все работает просто отлично, у меня есть кое-что еще, потому что они не равны. Дата, которую я получаю из базы datetime
данных, — это формат типа 2015-04-13 09:03:49
<?php
$current_datetime = strtotime(date('Y-m-d H:i'));
$send_date = date("Y-m-d H:i", strtotime($row['send_date'])); // suppose $row['send_date']'s value is '2016-10-17 15:00'
if($current_datetime == $send_date){
//I want to run some code here
echo 'something';
}else{
echo 'something else';
}
Выходной сигнал:
echo $current_datetime . '<br/>';
2016-10-17 09:19
echo $send_date .'<br/>';
2015-04-13 09:03
// result
something else
Комментарии:
1. Вы сравниваете строку с целым числом, не может работать. strtotime(date(‘Y-m-d H:i’)) никогда не равно date(«Y-m-d H:i», strtotime($row[‘send_date’])).