Intereting Posts

изменить формат даты, используя php

Я хочу изменить формат даты по php, у меня есть дата в формате, подобном этому d/m/Y и я хочу перейти на Ymd

Я видел этот вопрос, но для моего случая я все равно получаю пустое значение.

EX:$_REQUEST["date_moc"]='21/07/2014';
Я попытался выполнить echo strtotime($_REQUEST["date_moc"]); но ничего не отображается на моем экране.

и когда я echo date("Ymd",strtotime($_REQUEST["date_moc"])); Я получаю 1970-01-01

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

Благодаря!

Related of "изменить формат даты, используя php"

Самый простой способ

 $_REQUEST["date_moc"]='21/07/2014'; $explode = explode('/', $_REQUEST["date_moc"]); list($day,$month,$year) = $explode; $new_date = "$year-$month-$day"; echo $new_date; 

Попробуйте следующее: – Рабочая демонстрация

 $date = explode('/',str_replace('-','/',$_REQUEST["date_moc"])); $updated_date = $date[2].'-'.$date[1].'-'.$date[0]; echo $updated_date; 
 $_REQUEST["date_moc"]='21/07/2014'; $original_date = explode('/', $_REQUEST["date_moc"]); $year = $original_date[2]; // 2014 $month = $original_date[1]; // 07 $day = $original_date[0]; // 21 $date = $year.'/'.$month.'/'.$day; echo $date; 

демонстрация

Очень просто использовать DateTime::createFromFormat()

 $date = DateTime::createFromFormat('d/m/Y', '21/07/2014'); echo $date->format('Ym-d'); 

Смотрите демо-версию на eval.in


Для улучшения

Затем вы можете также проверить недопустимый ввод, если вы расширите фрагмент выше бит:

 if(($date = DateTime::createFromFormat('d/m/Y', '21//2014')) !== false) echo $date->format('Ym-d'); else echo 'Invalid format'; 

Но это только проверка шаблона, которая аналогична регулярному выражению

/ (\ D {1,2}) / (\ d {1,2}) / (\ d {4}) /

Это позволяет пользователю вводить что-то вроде:

50/13/2014

Чтобы проверить, действительно ли предоставленная дата действительна или недействительна, проверьте содержимое DateTime::getLastErrors() . Он расскажет вам подробно, что пошло не так. Для примера выше вы получите что-то вроде этого:

 array(4) { ["warning_count"]=> int(1) ["warnings"]=> array(1) { [10]=> string(27) "The parsed date was invalid" } ["error_count"]=> int(0) ["errors"]=> array(0) { } } 

Поэтому в соответствии с этой информацией мы можем немного расширить фрагмент. Это приводит нас к результату, подобному этому:

 $date = DateTime::createFromFormat('d/m/Y', '50/13/2014') if($date !== false) { $dateLastErrors = $date->getLastErrors(); if($dateLastErrors['error_count'] > 0 || $dateLastErrors['warning_count'] > 0) echo 'Invalid date'; else echo $date->format('Ym-d'); } else echo 'Invalid date format'; } 

Которая, наконец, проверит дату против формата проверки.

 $date = $_REQUEST["date_moc"];// OR $date ='21/07/2014'; avoid $_REQUEST["date_moc"]='21/07/2014'; echo date('Ym-d', strtotime($date)); 

Простейший способ

 $date ='21/07/2014'; $date = str_replace("/", "-", $date); echo date("Ymd",strtotime($date)); 

Рабочая демонстрация