Самый короткий способ сравнить 2 даты в формате dd / mm / yyyy

может ли кто-нибудь предложить самый опрятный способ сделать это сравнение? Мне нужно проверить, соответствует ли дата, указанная в формате dd / mm / yyyy, меньше фиксированной даты, например 01/05/2009 – я знаю, что могу преобразовать их в формат времени unix с использованием strtotime, а затем выполнить сравнение, m любопытно, если есть более быстрый способ сделать это – большое спасибо, просто ищет подсказку, чтобы улучшить мой код!

Вероятно, нет более короткого пути кода, и я бы не стал оптимизировать это, если вы не уверены, что это узкое место.

Тем не менее, если вы уверены, что он всегда будет в том же формате (включая 2 цифры в месяц и день и 0 с), вы должны иметь возможность изменить порядок строк, чтобы перенести год, затем месяц, а затем день, а затем просто сравните строки.

Однако я не уверен, что это будет быстрее, чем просто позволить библиотекам конвертировать в unix-время, а затем сравнить их.

Если вы можете изменить формат, в котором хранятся даты, вы можете определить их как yyyy / mm / dd, а затем просто сравнить строки.

Один из вариантов – просто изменить формат – создать строку формы

yyyy/mm/dd 

Это отсортированный формат, поэтому вы можете просто сравнить порядковые строки. Конечно, это означает, что вы не обнаружите недействительные данные и т. Д.

Я думаю, что ваше решение конвертировать его в Epoch, а затем делать сравнение так же быстро и чисто, как вы собираетесь получить.

если вы хотите улучшить свой код, я бы предложил вам использовать класс DateTime. Он был введен в php 5.2.0 (так что он все равно может не поддерживаться на всех серверах)

в php 5.3.0 вы можете написать примерно следующее:

 $d1 = DateTime::createFromFormat('d/m/Y', '02/03/2009'); $d2 = DateTime::createFromFormat('d/m/Y', '02/05/2009'); $interval = $d1->diff($d2); echo $interval->format('%R%d days'); 

Ну, вы можете использовать класс даты PHP, но я не уверен, что это будет лучше, чем у вас в настоящее время решение …

http://php.net/manual/en/book.datetime.php

используйте этот метод

год месяц день

у вас есть 01.05.2010 и 03.07.2010

и для сравнения: 20100501 <= or => 20100703

 $fixedDate = '01/05/2009'; $variableDate = '28/04/2010'; // Now we do our timestamping magic! $fixedDate = implode('', array_reverse(explode('/', $fixedDate))); $variableDate = implode('', array_reverse(explode('/', $variableDate))); if ($variableDate < $fixedDate) // 20100428 < 20090501 { // there you go }