use*_*502 8 datetime laravel laravel-4 php-carbon laravel-5
我正在尝试使用我的Angularjs前端进行Laravel API交换日期.
它通过首先转换我的mysql datetime初始值从Laravel到JS工作:
2015-08-19 10:00:00
Run Code Online (Sandbox Code Playgroud)
使用$newdate = Carbon::parse($event['date'])->toATOMString();哪些输出:
2015-08-19T10:00:00+00:00
Run Code Online (Sandbox Code Playgroud)
,然后将其转换为javascript日期对象(Angularjs),使用event.date = new Date(event.date);哪些输出:
Date 2015-08-19T10:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
问题:将更新的Javascript日期对象发布回我的PHP API以更新mysql db(datetime)中的值.Carbon不喜欢他回来的日期格式:
2015-08-19T11:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理这个问题.我从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);
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我尝试过的(没有成功).我显然错过了一些东西而不确定我在做什么.
/**
* 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));
}
Run Code Online (Sandbox Code Playgroud)
最初由问卷本人发布,但他将答案发布到问题本身中,因此我在这里编辑问题以使其更有意义他写道:
\n\n我终于还是去了
\n\n在我的 AngularJS 前端更新我的日期时间并将我的 JS 日期对象发布回我的 PHP API 后,我不知道如何使用以下日期格式:
\n\n2015-08-19T11:00:00.000Z\nRun Code Online (Sandbox Code Playgroud)\n\n我不断收到异常
\n\n\n\n\n'InvalidArgumentException' 带有消息 'Trailing data' \xe2\x80\xa6\n Carbon/Carbon.php:392 错误。
\n
我试过
\n\n$date = Carbon::createFromFormat('Y-m-d\\TH:i:s.uO', $date);\nRun Code Online (Sandbox Code Playgroud)\n\n但这没有用。在意识到我的 Laravel 模型需要以下日期时间格式后Y-m-d H:i,我必须对从 JS 收到的日期时间进行双重格式化。
$date = Carbon::createFromFormat('Y-m-d\\TH:i:s.uO', $date);->format('Y-m-d H:i');\nRun Code Online (Sandbox Code Playgroud)\n\n不确定这是最好的方法,但目前有效。
\n