我完全没有尝试用角度前端制作php api交换日期。
从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的最佳和最自动的解决方案是什么?
答案 0 :(得分:22)
$dt = Carbon::now();
echo $dt->toW3cString(); // 2015-02-05T14:50:55+01:00
因为碳可以打印它,它也可以解析这种格式
Carbon::parse('2015-02-05T14:50:55+01:00');
使用moment.js momentjs.com 在javascript中
moment().format(); // 2015-02-05T14:50:55+01:00
答案 1 :(得分:0)
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中初始化变量,它不起作用: