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

时间:2015-08-20 15:16:10

标签: laravel datetime laravel-5 laravel-4 php-carbon

我正在尝试使用我的Angularjs前端进行Laravel API交换日期。

首先将我的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 = new Date(event.date);将其转换为javascript日期对象(Angularjs),输出:

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

问题将我更新的Javascript日期对象发回我的PHP API 以更新mysql db(datetime)中的值。 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));
}       

1 个答案:

答案 0 :(得分:0)

最初由questionaire himeself发布,但他将答案发布到问题本身,所以我在这里编辑问题以使其更有意义他写道:

我终于去了。

在我的AngularJS前端更新我的日期时间并将我的JS日期对象发布回我的PHP API后,我无法弄清楚如何使用以下日期格式:

2015-08-19T11:00:00.000Z

我一直得到例外

  

' InvalidArgumentException'有消息'追踪数据' ...   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');

不确定这是最好的方法,但它现在有效。