конвертировать дату формата dd / mm / yyyy из формы в метку времени?

У меня есть форма, требующая даты в формате dd/mm/yyyy , и я попытался преобразовать ее в метку времени с strtotime() функции strtotime()

но я видел, что это работает, только если вы заполните форму датой, написанной как dd-mm-yyyy

как я могу решить? Я не знаю за границей, но здесь, в Италии, никто не пишет такие даты dd-mm-yyyy

Прекратите использование strotime() , date() , time() и т. Д., Начните использовать DateTime .

Идеальное решение для всех типов известных входных данных:

 $dt = DateTime::createFromFormat('d/m/Y', $yourDMYinput); echo $dt->getTimestamp(); # or $dt->format('U'); 

И зачем вам нужна метка времени?

Зачем взрываться, заменять или даже вырезать строку ??? Просто используйте createFromFormat .

Q1: Потому что он не поддерживается ниже PHP 5.3.

Уже есть v5.5. Я думаю, что ответы должны быть на последний код, а не на код с 2006 года. Да v5.2 был выпущен в 2006 году и v5.3 в 2009 году ( см. Даты выпуска ). Если OP запрашивает старый код, найдите его на SO и закройте этот вопрос с помощью дубликата; не отвечайте.

Q2: Потому что я не знаю DateTime.

Узнать его.

Q3: Потому что я могу делать больше с помощью strotime() , date() , time() и т. Д.

Покажите мне одну вещь, которую могут выполнять эти функции, и DateTime не может.

Примеры с устаревшими примерами:

 $input = '12/09/2013'; # dd/mm/yyyy $new = substr($input,6,4)."-".substr($input,3,2)."-".substr($input,0,2); $new = strtotime($new); echo "$new\n"; $m = explode('/', $input); $new = mktime(0,0,0,$m[1],$m[0],$m[2]); echo "$new\n"; $new = str_replace("/", "-", $input); $new = strtotime($new); echo "$new\n"; preg_match('~^(\d+)/(\d+)/(\d+)$~', $input, $m); $new = strtotime("$m[3]-$m[2]-$m[1]"); echo "$new\n"; $m = sscanf($input, '%d/%d/%d'); $new = strtotime("$m[2]-$m[1]-$m[0]"); echo "$new\n"; 

Если у вас есть другой пример устаревшего кода, отредактируйте этот ответ и добавьте его;)

Почему бы не использовать str_replace ?

 $timestamp = strtotime(str_replace("/", "-", $dateString)); 

Или еще лучше, преобразовать строку в YYYY-MM-DD прежде чем вставлять.

Ваш вопрос не очень ясен.

Если вы получите из формы дату в формате «dd / mm / yyyy», и вам нужно преобразовать ее в «yyyy-mm-dd», вы можете просто использовать substr :

 $date_eng=substr($data_ita,6,4)."-".substr($data_ita,3,2)."-".substr($data_ita,0,2); 

а также

 $data_ita=substr($date_eng,8,2)."/".substr($date_eng,5,2)."/".substr($date_eng,0,4); 

Довольно длинный.

 $get_array = explode('/', 'dd/mm/yyyy'); $day = $get_array[0]; $month = $get_array[1]; $year = $get_array[2]; $time_Stamp = mktime(0,0,0,$month,$day,$year);