我正在尝试让我的 Laravel API 与我的 Angularjs 前端交换日期。
通过首先转换我的 mysql 日期时间初始值,它可以从 Laravel 到 JS:
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(日期时间)中的值。Carbon 不喜欢他返回的日期格式:
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));
}