处理php(LaravelAPI)和javascript(AngularJS)之间的日期时间

处理php(LaravelAPI)和javascript(AngularJS)之间的日期时间,laravel,datetime,laravel-5,laravel-4,php-carbon,Laravel,Datetime,Laravel 5,Laravel 4,Php Carbon,我正在尝试与Angularjs前端进行Laravel API交换 它通过首先转换my mysql datetime初始值从Laravel工作到JS: 2015-08-19 10:00:00 使用$newdate=Carbon::parse($event['date'])->toATOMString()哪些输出: 2015-08-19T10:00:00+00:00 ,然后使用event.date=newdate(event.date)将其转换为javascript日期对象(Angularjs)

我正在尝试与Angularjs前端进行Laravel API交换

它通过首先转换my mysql datetime初始值从Laravel工作到JS:

2015-08-19 10:00:00
使用
$newdate=Carbon::parse($event['date'])->toATOMString()哪些输出:

2015-08-19T10:00:00+00:00
,然后使用
event.date=newdate(event.date)将其转换为javascript日期对象(Angularjs)哪些输出:

Date 2015-08-19T10:00:00.000Z
问题将更新后的Javascript日期对象发回我的PHP API以更新mysql数据库中的值(日期时间)。Carbon不喜欢他回来的日期格式:

2015-08-19T11:00:00.000Z
我不知道该怎么处理。我从我的Laravel日志中得到以下错误:
异常“InvalidArgumentException”,带有消息“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));
}       

最初由提问者自己发布,但他将答案发布到问题本身中,因此我在这里编辑问题以使其更有意义,他写道:

我终于成功了

在AngularJS前端更新我的datetime并将我的JS date对象发布回我的PHP API后,我不知道如何使用以下日期格式:

2015-08-19T11:00:00.000Z
我一直有例外

“InvalidArgumentException”与消息“Training data”… Carbon/Carbon.php:392错误

我试过了

$date = Carbon::createFromFormat('Y-m-d\TH:i:s.uO', $date);
但那没用。在意识到我的Laravel模型需要以下datetime格式
Y-m-dh:i
之后,我不得不将从JS收到的datetime格式加倍

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

不确定这是否是最好的方法,但它现在可以工作。

你能将它从JS
Date()
转换成unix时间戳,然后使用
Carbon::createfromtimstamp()
?我不想在JS中使用日期格式(除了更新它),所以我试图在我的Laravel控制器中操纵日期。我玩Carbon::createFromFormat时运气不好(我已经更新了上面的代码)。我想我现在明白了。问题更新为解决方案请在答案中发布您的答案,否则我将在此处进行编辑。。谢谢