сохранение даты и времени в коде БД всегда 1970 - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть код, чтобы сохранить дату публикации sh в базе данных, но она всегда менялась на 1970/01/01 07:00. Я использую платформу codeigniter, и это мой код представления

            <div class="form-group">
                <label class="control-label col-md-2">Publish Date</label>
                <div class="col-md-10">
                    <div class="input-group date form_datetime bs-datetime" data-date-format="yyyy-mm-dd HH:ii">
                        <input type="text" name="form[date]" class="form-control" readonly="">
                        <span class="input-group-addon">
                            <button class="btn default date-reset" type="button">
                                <i class="fa fa-times"></i>
                            </button>
                        </span>
                        <span class="input-group-addon">
                            <button class="btn default date-set" type="button">
                                <i class="fa fa-calendar"></i>
                            </button>
                        </span>
                    </div>
                </div>
            </div>

и это мой контроллер

$form = $this->input->post('form');
$data['PUBLISH'] = date('Y/m/d H:i a', strtotime($form['date']));

, когда я печатаю $form['date'], результат нормальный, но когда я конвертирую $form['date'] в формате даты, это была ошибка, где ошибка?

1 Ответ

0 голосов
/ 16 апреля 2020

Похоже, что ваше входное имя и ключ массива несовместимы ("дата" против "даты").

Unix отметки времени относятся к 1 января 1970 года, и, следовательно, это значение отметки времени 0 Неопределенный ключ массива приведет к значению NULL (и, скорее всего, уведомление / предупреждение в журналах). strtotime вернет false, когда первый параметр имеет значение NULL, и будет преобразован в 0 при передаче в date и, следовательно, в дату 1970/01/01.

Редактировать

Исходя из вашей дополнительной информации в комментариях, проблема в том, что предоставленный вами формат даты не распознается strtotime. Вам нужно будет проанализировать ожидаемый формат, используя другой метод.

Вы можете использовать DateTime::createFromFormat для анализа указанного формата c, а затем использовать DateTime::format хранить его в нужном формате. Например:

$date=DateTime::createFromFormat("d F Y - H:i", $form["date"]);
$data["PUBLISH"]=$date->format("Y/m/d H:i a");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...