如何处理php(Laravel api)和javascript(AngularJS)之间的日期时间

时间:2015-02-05 12:55:36

标签: javascript php angularjs date laravel

我完全没有尝试用角度前端制作php api交换日期。

从PHP到JS我似乎已经对它进行了排序。由于Laravel通过Carbon处理日期,我刚刚将\Carbon\Carbon::setToStringFormat('c');添加到a​​pp.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的最佳和最自动的解决方案是什么?

2 个答案:

答案 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中初始化变量,它不起作用: