如何处理 php (Laravel api) 和 javascript (AngularJS) 之间的日期时间
How to handle datetime between php (Laravel api) and 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 日期格式以毫秒添加到字符串结束,在默认配置中 Carbon 抱怨尾随数据。
此外,浏览器似乎会自动将我的日期转换为 UTC 时间。
起初手动使用 new Carbon('jsDateString')
似乎可行,但仔细检查时区数据未被考虑。
所以我的问题是,将日期从 AngularJS 前端发送回 Laravel php api 的最佳和最自动的解决方案是什么?
$dt = Carbon::now();
echo $dt->toW3cString(); // 2015-02-05T14:50:55+01:00
因为 carbon 可以打印它也可以解析这种格式
Carbon::parse('2015-02-05T14:50:55+01:00');
在 javascript 和 moment.js momentjs.com
moment().format(); // 2015-02-05T14:50:55+01:00
1) 在 Laravel 控制器中创建 Carbon 日期
$date_from = Carbon::now();
return view('reports', compact('date_from'));
2) 您需要在 Angular conctoller
中初始化 Date
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 中初始化变量,它不会工作:
我完全无法尝试让 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 日期格式以毫秒添加到字符串结束,在默认配置中 Carbon 抱怨尾随数据。
此外,浏览器似乎会自动将我的日期转换为 UTC 时间。
起初手动使用 new Carbon('jsDateString')
似乎可行,但仔细检查时区数据未被考虑。
所以我的问题是,将日期从 AngularJS 前端发送回 Laravel php api 的最佳和最自动的解决方案是什么?
$dt = Carbon::now();
echo $dt->toW3cString(); // 2015-02-05T14:50:55+01:00
因为 carbon 可以打印它也可以解析这种格式
Carbon::parse('2015-02-05T14:50:55+01:00');
在 javascript 和 moment.js momentjs.com
moment().format(); // 2015-02-05T14:50:55+01:00
1) 在 Laravel 控制器中创建 Carbon 日期
$date_from = Carbon::now();
return view('reports', compact('date_from'));
2) 您需要在 Angular conctoller
中初始化 DaterrApp.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 中初始化变量,它不会工作: