Хобрук: Ваш путь к мастерству в программировании

Проверка даты и времени в модели Laravel

У меня есть плагин datepicker для всплывающего представления календаря, чтобы пользователи могли выбирать дату + время, однако формат, который он создает:

May 9, 2016 8:30 AM

При сохранении в базе данных мне нужен формат:

2016-09-05 08:30:00

В контроллере моего приложения у меня есть:

public function save(Request $request)
{
    Entry::create($request->all());
    return redirect('entries');
}

Что сохраняет ввод формы пользователей, однако не сохраняет дату и время из-за неправильного формата. Я попытался создать новую функцию для форматирования даты перед вводом ее в базу данных.

public function formatDate($data)
{
    $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data);
    return $returnDate->format('Y-d-m G:i:s');
}

Однако, когда я вызываю функцию из функции сохранения, она говорит, что функция не определена. Я делаю что-то неправильно или как правильно это сделать?

09.05.2016

  • $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data); здесь $returnDate возвращает false.so возникает ошибка 10.05.2016

Ответы:


1

Вы должны установить правильный формат для DateTime::createFromFormat(). Создать из формата означает, что вы должны указать шаблон, соответствующий любой информации в заданную дату. Для вашего свидания схема такова:

DateTime::createFromFormat('F j, Y g:i A', $data);

Вот демонстрация: https://eval.in/567629

Список всех параметров формата: http://php.net/manual/en/function.date.php

09.05.2016

2

Обе функции внутри модели? Если да, то как вы пытаетесь вызвать функцию formatDate?

Вместо этого вы можете использовать анонимную функцию, попробуйте:

$formatted_date = function() use ($data) { $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data); return $returnDate->format('Y-d-m G:i:s'); };

Внутри вашего контроллера или модели.

09.05.2016
  • Обе функции находятся в одной модели. Я пытался вызвать formatDate в функции save, но в ней указано, что функция не определена, поэтому мой приведенный выше код не включает ее, я все еще пытаюсь с ней поэкспериментировать. Спасибо за ваш ответ. 10.05.2016

  • 3

    В Laravel created_at и updated_at преобразуются в объекты Carbon.

    https://laravel.com/docs/5.2/eloquent-mutators#date-mutators

    С вашей датой вы могли бы сделать то же самое

    class User extends Model { /** * The attributes that should be mutated to dates. * * @var array */ protected $dates = ['created_at', 'updated_at', 'your_date']; }

    то при сохранении даты она будет приведена к правильному формату.

    Попробуйте и дайте нам знать, как у вас дела!

    09.05.2016

    4

    Например;

    $data = "May 9, 2016 8:30 AM";
    
    return  date('Y-d-m H:i:s',strtotime($data));
    
    10.05.2016
    Новые материалы

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..