2015-08-20 45 views
8

我正在嘗試使用我的Angularjs前端來製作Laravel API交換日期。處理PHP(Laravel API)和javascript(AngularJS)之間的日期時間

它從Laravel工作以JS通過第一轉換我的MySQL日期時間初始值:使用

2015-08-19 10:00:00 

$newdate = Carbon::parse($event['date'])->toATOMString();其輸出:

2015-08-19T10:00:00+00:00 

,後來將其轉換成一個JavaScript日期對象(Angularjs )使用event.date = new Date(event.date);其中輸出:

Date 2015-08-19T10:00:00.000Z 

問題將更新後的Javascript日期對象發回我的PHP API以更新mysql db(datetime)中的值。碳不喜歡他回來的日期格式:

2015-08-19T11:00:00.000Z 

而且我不知道如何處理這個。我從我的Laravel日誌中得到以下錯誤:exception 'InvalidArgumentException' with message 'Trailing data' … Carbon/Carbon.php:392

問題:我應該如何在php中將上述格式化日期進行轉換,以便Carbon接受它?

我並不需要記錄秒,所以我Laravel模型處理日期,像這樣:

$this->attributes['date'] = Carbon::createFromFormat('Y-m-d H:i', $date); 

這裏是我的嘗試(沒有成功),直至現在。我明顯錯過了一些東西,不確定我在做什麼。

/** 
* Store updates to event. 
* 
* @return Response 
*/ 
public function update($id) 
{ 
    $event = Event::findOrFail($id); 

    $date = Request::get('jsdateobject'); 

    // ------------------------------------------------------------  
    // trying to handle following format: 2015-08-19T11:00:00.000Z 
    // ------------------------------------------------------------ 

    // $date = Carbon::parse($date)->toATOMString();  // didn't work - outputs: 2015-08-19T11:00:00+00:00 
    // $date = Carbon::parse($date)->toDateTimeString(); // didn't work - outputs: 2015-08-19 11:00:00 
    // $date = Carbon::parse($date)->toW3cString();   // didn't work - outputs: 2015-08-19T11:00:00+00:00 
    // $date = new Carbon($date);       // didn't work - outputs: 2015-08-19 11:00:00 
    $date = Carbon::createFromFormat('Y-m-d\TH:i:s.uO', $date); // didn't work - outputs: 2015-08-19 11:00:00 

    $event->date = $date; 
    $event->update(); 

    return Response::json(array('success'=>true)); 
}  
+0

可以將它轉換爲JS'Date()'的unix時間戳,然後使用'Carbon :: createFromTimestamp()'? – benJ

+0

我不想在JS中玩日期格式(除了只更新它),所以我試圖在我的Laravel控制器中操作日期。我用Carbon :: createFromFormat玩沒有運氣(我已經更新了上面的代碼)。 – user3489502

+0

我想我現在明白了。問題更新解決方案 – user3489502

回答

0

最初由問卷himeself發佈,但他張貼的答案到問題本身所以在這裏我編輯的問題,使更多的意義上,他寫道:

我終於去了。

更新我的日期時間在我的AngularJS前端和張貼我的JS日期對象回到我的PHP API後,我無法弄清楚如何使用下列日期格式:

2015-08-19T11:00:00.000Z 

我一直得到異常

'InvalidArgumentException'帶有'Trailing data'消息... Carbon/Carbon.php:392錯誤。

我試圖

$date = Carbon::createFromFormat('Y-m-d\TH:i:s.uO', $date); 

,但沒有奏效。在意識到我的Laravel模型期望以下日期時間格式Y-m-d H:i後,我必須將從JS接收的日期時間格式化爲兩倍。

$date = Carbon::createFromFormat('Y-m-d\TH:i:s.uO', $date);->format('Y-m-d H:i'); 

不知道這是做到這一點的最佳方式,但它現在可行。