存储由CakePHP中的AJAX调用传递的日期值

时间:2011-06-19 16:44:03

标签: php cakephp

我正在尝试通过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
)

如何将之前使用的字符串转换为此结构?

1 个答案:

答案 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;

这就是你需要做的一切。