2011-06-19 5 views
1

JavaScriptのDateオブジェクトを、AJAX呼び出しによってCakePHPにあるコントローラに渡そうとしています。それを送信する前にjsの日付オブジェクトを変換しなければならなかったので、送信されていなかったからです。CakePHPでAJAX呼び出しで渡された日付値を格納する

startDate = startDate.toUTCString(); 

私は何をコントローラに取得することは、文字列

水曜日、2001年1月31日午後2時01分01秒GMT

これまでのところ問題ありませんです。しかし、今私はこのためにdatetimeフィールドを使用するデータベースにこの値を格納する必要があります。私は、Cakeがdatetimeを表すこの配列を使用していることに気付きました。

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

以前にこの文字列をこの構造に変換するにはどうすればよいですか?

答えて

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; 

に送信します。

+1

時刻を保存する場合は、日付書式設定文字列にH:i:sを追加してください。 – JohnP

+0

ありがとう、ありがとうございます。 –

関連する問題