Невозможно сохранить точную метку времени из формы - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь сохранить события в моей таблице, которые содержат метки времени date_start и date_end.С другой страницы PHP я получаю четыре ввода: два ввода даты и два ввода времени.Я пытаюсь вставить эти значения, но при вставке я получаю следующее значение:

0000-00-00 00: 00: 00

Вот мой сценарий:

$rep=$bdd->query('SELECT * FROM association WHERE nom="'.$_SESSION['usertag'].'"');
$data=$rep->fetch();
$debut="\'".$_POST['date_start']." ".$_POST['time_start'].":00\'";
$fin="\'".$_POST['date_end']." ".$_POST['time_end'].":00\'";
$debut=date('Y-m-d H:i:s');
$fin=date('Y-m-d H:i:s');
$timestamp_debut =strtotime($debut);
$timestamp_fin = strtotime($fin);
$req=$bdd->query('INSERT into evenement values (NULL,'.$_POST['name'].','.$_POST['content'].',\''.$timestamp_debut.'\',\''.$timestamp_fin.'\','.$data['id'].')');

1 Ответ

0 голосов
/ 03 июля 2019

PHP strtotime() выводит метку времени Unix.Если тип столбца вашей базы данных DATETIME , временная метка Unix имеет неправильный формат.Вы можете просто вставить отформатированную строку date().

Например:

strtotime(date('Y-m-d H:i:s'))

1562117846

date('Y-m-d H:i:s')

2019-07-02 21: 36: 40

Для MySQL:

MySQL распознает значения DATETIME и TIMESTAMP ... [a] строка вформат ' ГГГГ-ММ-ДД чч: мм: сс ' или формат * ГГГ-ММ-ДД чч: мм: сс '.Здесь также разрешен «смягченный» синтаксис: любой символ пунктуации может использоваться в качестве разделителя между частями даты или частями времени.Например, «2012-12-31 11:30:45», «2012 ^ 12 ^ 31 11 + 30 + 45», «2012/12/31 11 * 30 * 45» и «2012 @ 12 @ 31 11».^ 30 ^ 45 'эквивалентны.

Строковые и числовые литералы в контексте даты и времени


Однако кажется, что вы используететекущая отметка времени, когда вы можете использовать значения, отправленные из вашей формы.PHP date() использует «текущее время, если метка времени не указана».

Если вы хотите использовать вместо этого свои опубликованные значения, вы действительно можете использовать strtotime() для преобразования их в Unixметки времени и затем date() для их форматирования.

$date = '2019-07-02';
$time = '15:28';

date('Y-m-d H:i:s',strtotime($date.' '.$time));

2019-07-02 15: 28: 00

В качестве альтернативы, я мог бы рекомендовать использовать PHP DateTime класс :

$date = '2019-07-02';
$time = '15:28';

$datetime = new Datetime($date.' '.$time);
echo $datetime->format('Y-m-d H:i:s');

2019-07-02 15: 28: 00

...