Подтвердить что ты не робот

Как обрабатывать datetime между php (Laravel api) и javascript (AngularJS)

Я полностью застреваю, пытаясь сделать даты обмена php api с интерфейсом angular.

От PHP до JS, похоже, он отсортирован. Поскольку Laravel обрабатывает даты через Carbon, я просто добавил \Carbon\Carbon::setToStringFormat('c'); в app.php, что делает даты в ISO 8601.

Пример PHP:

2015-02-04T00: 53: 51 + 02: 00

Фильтр даты AngularJS также, похоже, хорошо понимает этот формат и даже правильно считывает часовой пояс.

То, что я еще не получил, - это отправлять объекты даты JS обратно на PHP api.

Пример JS:

2015-02-05T13: 00: 00.000Z

Формат даты Javascript заканчивается миллисекундами, добавленными в строку и в конфигурации по умолчанию. Углерод жалуется на конечные данные.

Также браузеры автоматически переводят мои даты в UTC.

Вручную с использованием new Carbon('jsDateString'), похоже, работает сначала, но при более близком осмотре данные о часовом поясе не рассматриваются.

Итак, мой вопрос заключается в том, что было бы лучшим и самым автоматическим решением для отправки дат в Laravel php api из интерфейса AngularJS?

4b9b3361

Ответ 1

$dt = Carbon::now();
echo $dt->toW3cString();       // 2015-02-05T14:50:55+01:00

так как углерод может печатать его, он также может анализировать этот формат

Carbon::parse('2015-02-05T14:50:55+01:00');

в javascript с moment.js momentjs.com

moment().format(); // 2015-02-05T14:50:55+01:00

Ответ 2

1) сделать дату карбона в контроллере Laravel

$date_from = Carbon::now();
return view('reports', compact('date_from'));

2) Вам нужно создать дату в Angular conctoller

rrApp.controller('reportsCtrl', ['$scope', '$filter', function($scope, $filter)
{
        $scope.start_date = new Date("{{$date_from}}");
        $scope.start_date = new Date($filter("date")($scope.start_date, 'yyyy-MM-dd'));// only date, no time

}]); 

3) используйте его

<input type="date" class="form-control" ng-model="start_date">

4) НЕ пытайтесь инициализировать переменную в ng-init, это не сработает: