У меня есть форма, требующая даты в формате 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');
И зачем вам нужна метка времени?
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);