2013-10-10 3 views
1

Я создаю календарь на основе JavaScript, используя full-calendar.js в качестве основной основы. Таким образом, в другом, чтобы вставить новый event в базу данных MySQL, у меня есть следующий фрагмент кода:правильно форматировать дату javascript для MySQL

$.post("http://localhost/calendar/index.php/calendar/insert_event", 
     { 
     title : title, 
     start : start, 
     end : end, 
     allDay : allDay, 
     url : '' 
     }, 
     function(answer) { 
     console.log(answer); 
     } 
); 

даты start и end просто Date() объекты:

var date = new Date(); 
var d = date.getDate(); 
var m = date.getMonth(); 
var y = date.getFullYear(); 

в контроллере calendar.php, Я получаю следующий результат:

{"title":"lunch", 
"start":"Tue Oct 08 2013 08:00:00 GMT-0700 (Pacific Standard Time)", 
"end":"Tue Oct 08 2013 08:30:00 GMT-0700 (Pacific Standard Time)", 
"allDay":"false", 
"url":""} 

start и end: DATETIME Типы в таблице MySQL, где столбцы имеют один и тот же тип, были выше. Когда я делаю insert с использованием функций Active Record CodeIgniter's, он вставляет в таблицу без дополнительных проблем. Однако, когда я смотрю на базе MySQL, чтобы увидеть результат, я вижу:

mysql> select * from calendar_utility; 
+----+-----+-------+---------------------+---------------------+--------+ 
| id | url | title | start    | end     | allday | 
+----+-----+-------+---------------------+---------------------+--------+ 
| 1 |  | lunch | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |  0 | 
+----+-----+-------+---------------------+---------------------+--------+ 
1 row in set (0.00 sec) 

Как я могу исправить форматирование JavaScriptDate() правильно вставить в БД MySQL?

+0

простят меня, я был неправ, 'strtotime' не работает как хороший :) Просто конвертировать Дата объект для строки mysql datetime. [Пример] (http://stackoverflow.com/questions/2280104/convert-javascript-to-date-object-to-mysql-date-format-yyyy-mm-dd) – Peter

+1

Это было сделано раньше, посмотрите a это сообщение: http://stackoverflow.com/a/13452892/2131277 – edwardbrosens

ответ

4

я бы, вероятно, конвертировать JS Date объекты строк, соответствующих формату MySQL DATETIME, как это:

$.post("http://localhost/calendar/index.php/calendar/insert_event", 
     { 
     title : title, 
     start : start.getFullYear() + "-" + (start.getMonth()+1) + "-" + start.getDate() + " " + start.getHours() + ":" + start.getMinutes() + ":" + start.getSeconds(), 
     end : end.getFullYear() + "-" (end.getMonth()+1) + "-" + end.getDate() + " " + end.getHours() + ":" + end.getMinutes() + ":" + end.getSeconds(), 
     allDay : allDay, 
     url : '' 
     }, 
     function(answer) { 
     console.log(answer); 
     } 
); 
+1

Не то, что отсутствует '+' конкатенатор между '-' и' (start.getMonth() + 1) ', который вызывает ошибка. Stackoverflow не позволит мне делать «изменения» менее 6 символов. –

+0

Спасибо, я исправил это. – TheWolf

Смежные вопросы