Intereting Posts
Вызов конструктора из аргументов переменной с помощью PHP Как преобразовать динамически построенный запрос ext / mysql в подготовленный отчет PDO? Почему не работает оператор if if с функцией get_the_category? как я могу получить только один div для обновления на submit, как показано на всей странице? Как передать значения между страницами PHP для MVC? Как получить «контакт» пользователя с помощью API Google с помощью PHP Хорошая форма безопасности – нет CAPTCHA Преобразование в и из индуистского календаря PHP strtotime () ничего не выводит Есть ли простой способ обнаружить пересечения сегментов линии? Можно ли использовать googles reCaptcha с formpree? Redirect :: back () не работает в laravel 5.2 Открыть график | Опубликовать действие | Использование PHP для cURL вместо терминального Magento – Неустранимая ошибка: вызов функции-члена getBackend () для не-объекта в app / code / core / Mage / Eav / Model / Entity / Abstract.php в строке 816 Показать запись не найдена с помощью виджета tablesorter.

Как преобразовать массив даты, который был возвращен с даты_parse обратно в строку даты

У меня есть массив даты в формате, который возвращается PHP-процедурой date_parse. Мне нужно преобразовать этот массив даты в строку даты.

Я ищу функцию, которая выполняет обратную процедуру date_parse. Это функция, которая примет массив даты в качестве параметра и вернет строку даты.

http://php.net/manual/en/function.date-parse.php

У массива дат иногда есть только значения для «год», «месяц» и «день». В других случаях у него будут значения «год», «месяц», «день», «час», «минута» и «секунда». Если отсутствуют часовые, минутные и второстепенные значения, я ожидаю, что процедура вернет строку даты с 00:00:00 для часа, минуты и второй части строки.

Я потратил некоторое время на поиск, но до сих пор не нашел функцию, противоположную date_parse.

Я искал ответ на тот же вопрос, но не смог его найти. Я нашел несколько примеров в документации PHP, используя date() и mktime() и придумал это …

 $date_array = date_parse($date_string); // returns original date string assuming the format was Ymd H:i:s $date_string = date('Ymd H:i:s', mktime($date_array['hour'], $date_array['minute'], $date_array['second'], $date_array['month'], $date_array['day'], $date_array['year'])); 

Я проверил это, и строка будет содержать нули, которые вы хотите, если час, минута и секунда не передаются в mktime() .

Ну, лучшее, что я могу найти, это просто использовать sprintfmktime требует установки языкового стандарта времени, и мне также не нравится проходить временную метку для форматирования даты.

Итак, просто напечатайте отформатированные поля:

 // Parse from YYYY-MM-DD to associative array $date = date_parse_from_format("Ymd", "2014-07-15"); // Write back to DD/MM/YYYY with leading zeros echo sprintf("%02d/%02d/%04d", $date["day"], $date["month"], $date["year"]); 

EDIT: но это решение требует некоторой настройки, если вам нужно, например, напечатать только последние 2 цифры года (например, с 1984 года до «84»).

Я использую выбор даты в форме, а формат возврата – массив:

[start] => Array ([month] => 04 [day] => 26 [year] => 2016 [hour] => 05 [min] => 54 [meridian] => pm) [end] => Array ([месяц] => 04 [день] => 26 [год] => 2016 [час] => 05 [мин] => 54 [меридиан] => pm)

Способ преобразования этого объекта на сегодняшний день следующий:

 $timeArray = $this->request->data['Task']['start']; $start = $this->Task->deconstruct('start', $timeArray); 

Моя модель «Задача», и ключ для массива дат «start», вам нужно заменить эти два поля своим.

И выход объекта даты:

 2016-04-26 17:54:00 

Ссылка: как лучше всего преобразовать данные формы выбора даты CakePHP в объект PHP DateTime?