处理php(LaravelAPI)和javascript(AngularJS)之间的日期时间
我正在尝试与Angularjs前端进行Laravel API交换 它通过首先转换my mysql datetime初始值从Laravel工作到JS:处理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)
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');
不确定这是否是最好的方法,但它现在可以工作。你能将它从JSDate()
转换成unix时间戳,然后使用Carbon::createfromtimstamp()
?我不想在JS中使用日期格式(除了更新它),所以我试图在我的Laravel控制器中操纵日期。我玩Carbon::createFromFormat时运气不好(我已经更新了上面的代码)。我想我现在明白了。问题更新为解决方案请在答案中发布您的答案,否则我将在此处进行编辑。。谢谢