我正在尝试通过AJAX调用将一个javascript Date对象传递给CakePHP中的控制器。我必须在发送之前转换js中的日期对象,因为它没有被发送。
startDate = startDate.toUTCString();
我在控制器中得到的是一个字符串
2001年1月31日星期三14:01:01 GMT
到目前为止没问题。但现在我需要将此值存储在数据库中,该数据库使用datetime字段。我注意到Cake使用这个表示日期时间的数组。
[start_date] => Array
(
[month] => 06
[day] => 20
[year] => 2011
[hour] => 02
[min] => 19
[meridian] => am
)
如何将之前使用的字符串转换为此结构?
答案 0 :(得分:2)
你不需要。 Cake只是在内部保留该结构,但它实际需要的只是一个与您的数据库兼容的日期字符串。所以你只需要以'YYYY-MM-DD'的形式发送一个字符串,它就会保存它。
执行此操作的最佳方法是向自己发送JS时间戳而不是字符串表示形式。
var date = new Date();
var timestamp = date.getTime();//this will give you the timestamp
获得时间戳后,将其发送至蛋糕
//assuming you have the timestamp in the variable $timestamp
$formatted_date = date('Y-m-d', $timestamp / 1000);
//dividing by 1000 because JS timestamps are in miliseconds and PHP uses seconds
$this->data['Model']['start_date'] = $formatted_date;
这就是你需要做的一切。