【问题标题】:Storing date values passed by AJAX call in CakePHP在 CakePHP 中存储由 AJAX 调用传递的日期值
【发布时间】:2011-06-19 16:44:03
【问题描述】:

我正在尝试通过 AJAX 调用将 javascript Date 对象传递给我在 CakePHP 中拥有的控制器。在发送之前我必须在 js 中转换日期对象,因为它没有被发送。

startDate = startDate.toUTCString();

我在控制器中得到的是一个字符串

格林威治标准时间 2001 年 1 月 31 日星期三 14:01:01

目前没有问题。但现在我需要将此值存储在使用日期时间字段的数据库中。我注意到 Cake 使用了这个表示日期时间的数组。

[start_date] => Array
(
    [month] => 06
    [day] => 20
    [year] => 2011
    [hour] => 02
    [min] => 19
    [meridian] => am
)

如何将之前的字符串转换成这个结构?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    你不需要。 Cake 只是在内部保留该结构,但它真正需要的只是一个与您的数据库兼容的日期字符串。所以你可以发送一个'YYYY-MM-DD'形式的字符串,它会保存它。

    最好的方法是向自己发送 JS 时间戳而不是字符串表示形式。

    var date = new Date();
    var timestamp = date.getTime();//this will give you the timestamp
    

    获得时间戳后,将其发送给 cake

    //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;
    

    这就是你需要做的。

    【讨论】:

    • 如果你还想存储时间,在日期格式字符串中添加 H:i:s
    猜你喜欢
    • 2011-08-29
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2014-06-23
    • 2014-07-27
    • 2015-03-05
    相关资源
    最近更新 更多