如何处理php(Laravel-api)和javascript(AngularJS)之间的日期时间
How to handle datetime between php (Laravel api) and javascript (AngularJS)
我完全被困在了用angular前端进行php-api交换日期的尝试中。
从PHP到JS,我似乎已经整理好了。由于Laravel通过Carbon处理日期,我刚刚在app.php中添加了'Carbon'Carbon::setToStringFormat('c');
,使日期符合ISO8601。
PHP示例:
2015-02-04 00: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控制器中生成碳日期
$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中的变量,它将不起作用:
相关文章:
- angularjs中$cookiestore和$cookies之间的差异
- 使用服务(AngularJS)在控制器之间共享数据
- AngularJS中的页面之间共享数据返回空
- AngularJS$inject-点和括号访问器之间的差异
- 测试页面之间的AngularJS行为
- angularjs 中 $window.location.reload() 和 $route.reload() 之间的区
- Angularjs事件与发布/订阅指令之间的通信
- 使用Angularjs在两个不同页面的控制器之间共享数据
- 在使用AngularJS时,我应该在$apply和$watch之间使用哪个
- AngularJS和Thymelaf之间的冲突
- 访问angularJS中页面之间的控制器
- angularjs计算开始时间和当前时间之间的时间差
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- AngularJS:如何在控制器之间传递变量
- 如何在 Angularjs 中的交叉模块之间共享数据
- 在OnsenUI+AngularJS+PhoneGap中的控制器之间传递数据
- 使用 AngularJS 在控制器之间传递变量
- angularjs 中 ng-repeat 和 collection-repeat 之间的区别
- angularjs 中控制器和指令之间的通信
- 处理服务和控制器之间AngularJS Promises的推荐方法