#php
Вопрос:
У меня есть удостоверения личности, я пошел проверить, истек ли срок их действия, они в формате y/m/d, поэтому я получаю сегодняшнюю дату в этом формате, и она выходит неправильной.
Как я могу сравнить
2021/03/15
С 2021-12-25
Тире и косые черты, похоже, не имеют значения, поэтому я думаю, что это месяц
Сегодняшняя дата анализируется как дата, другая-строка из массива инструкций SQL
$utz = new DateTimeZone($_SESSION['timezone']);
$dt = new DateTime(null, $utz);
$today = $dt->format('Y/m/d');
while($myrow = pg_fetch_assoc($result))
if ($myrow['id1_expiry'] < $today) {
printf ("<tr bgcolor=#FD5D5D>.... }else{
Комментарии:
1. Что вы пробовали? Пожалуйста, покажите нам вашу попытку.
2. Проанализируйте оба в объекты DateTime, а затем вы сможете легко сравнить, и исходный формат не имеет значения
3. Я попробовал переменные, которые приравниваются к » если 2021-12-25
4. @ADyson могу ли я сделать это для поля массива?
5. Неясно, какую роль в этом играет массив? Это звучало так, как будто у тебя было две струны? Может быть, уточнить с помощью примера кода и образцов данных
Ответ №1:
Вы можете сравнить DateTime
объекты с помощью операторов сравнения.
Вы можете использовать сформированную дату для создания нового объекта DateTime в соответствии с принятым форматом.
$utz = new DateTimeZone($_SESSION['timezone']);
$date = new DateTime(null, $utz);
while ($myrow = pg_fetch_assoc($result)) {
if (new DateTime($myrow['id1_expiry'], $utz) < $date) {
echo 'expired';
}
}
Комментарии:
1. Я попробовал это, и он не находит те, у которых действительно истек срок годности
2. Пожалуйста, проверьте эту демонстрационную версию. Как вы можете видеть, сравнение дат работает так, как и ожидалось. Может быть, у вас проблемы с часовым поясом ?
3. Демонстрация не похожа на мой код, она не показывает мне, как я могу проанализировать 2-е свидание
4. Если дата из базы данных есть
2021-12-25
,new DateTime($sqldate)
будет работать.5. Так что вам не нужно
$today = $dt->format('Y/m/d');
, а просто сравните$dt
сnew DateTime($sqldate)
.