Формат mm / dd / yyyy в эпоху с PHP

У меня есть таблица mysql, которая полагается на отметку времени эпохи unix, эквивалентную дате записи, для сортировки и фильтрации в разных частях веб-сайта. Я пытаюсь реализовать средство выбора даты, которое будет вводить дату в поле формы в формате mm / dd / yyyy. Я пытаюсь преобразовать эту дату в формат unix epoch, чтобы добавить эту запись в поле строки. Все попытки, которые я сделал, привели к созданию метки времени текущего дня. Кто-нибудь знает, как я могу принять этот формат даты и преобразовать его в эквивалентную временную метку эпохи?

Заранее спасибо.

Дополнительная информация:

Я пытаюсь mktime, и все, что я получаю, это сегодняшняя эпоха. Извинения, я должен был добавить код раньше, чтобы лучше объяснить:

Идентификатор формы – это «дата». Поле базы данных «эпоха»

Вот что я пытаюсь (неудачно), когда я публикую дату:

$epochhold = ($_POST['date']); $epoch = mktime(0,0,0,$epochhold); 

Я понял из предыдущего сообщения, что это все равно будет передавать значение как mm / dd / yyyy, а не mm, dd, yyyy, как ожидается в mktime, однако сообщение не предложило и не решило, как это сделать. Я попробовал str_replace, чтобы изменить «/» на «,», и это вызвало тот же результат – получение сегодняшней эпохи, независимо от введенной даты.

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

 $epochhold = ($_POST['date']); $epochold2 = str_replace('/', ', ', $epochhold) $epoch = mktime(0,0,0,$epochhold2); 

Спасибо за предыдущий ответ, я не хотел, чтобы быстрый ответ оставался незамеченным!

Всем спасибо!

Спасибо всем за ответы – strtotime, похоже, работает лучше всего на начальных тестах и ​​может быть способом идти, поскольку этот формат является последовательным на всем сайте. Но все предложения помогли с этим несколько других вещей, так что спасибо всем вам снова!

Solutions Collecting From Web of "Формат mm / dd / yyyy в эпоху с PHP"

Если вы знаете, что он всегда будет в этом формате, strtotime преобразует его непосредственно в timestamp unix.

 strtotime($_POST['app_date']); 

НТН!

Вы должны посмотреть на функцию mktime () . Пара с регулярными выражениями или strtotime () , и вы получите его.

 if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) { // complain about invalid input } list($m, $d, $y) = explode('/', $_POST['date']); $timestamp = mktime(0, 0, 0, $m, $d, $y); 

Вам нужно будет отправить dd, mm, yyyy в качестве отдельных vars в mktime. Он принимает значение в $ epochold2 как одну строку, которая была бы недопустимой для mktime.

Лучше всего использовать strtotime, как я уже говорил, или следовать совету Ant P, используя mktime.

strtotime () будет анализировать практически любой формат даты и возвращать отметку времени Unix. Все, что вам нужно сделать, это передать ему строку даты / времени:

 $unix_time = strtotime($_POST['date']); if($unix_time < 0) { //error case } else { //value OK! } 

Как вы можете видеть выше, вы можете использовать его для подтверждения ввода – если пользователь вводит дату, например, 02/31/2008, она вернет -1.