当我使用<input type="date" ng-model="trip.start">
时,我在angularjs中遇到问题我认为trip.start
中的数据是2017-5-10
,但trip.start
中的数据是2017-5-10T17:00:00.000Z
如何在没有时间的情况下仅trip.start
解析yyyy-mm-dd
。
答案 0 :(得分:1)
The ng-model data must be a Date Object.
然后您的输入框将显示日期。 如果你想显示格式化的日期,那么你可以做这样的事情 -
$scope.formattedDate = $filter('date')($scope.trip.start, "your date format");
在控制器中添加$ filter作为依赖项,并将$ scope.formattedDate绑定到输入框。
答案 1 :(得分:1)
我建议使用日期格式。从服务器使用中获取数据后:
$scope.trip.start = moment($scope.trip.start).format("YYYY-MM-DD");
为此,请包含Moment.js库。
答案 2 :(得分:0)
你可以,
var date = trip.start.split("T")[0]
你会得到预期的结果。
答案 3 :(得分:0)
我不知道如何完全解析它,但在使用数据时尝试使用日期过滤器。像这样的东西 语法:
{{ date_expression | date : format : timezone}}
在你的情况下:
{{trip.start | date: 'yyyy-MM-dd'}}
有关更多参考,请阅读文档here
答案 4 :(得分:0)
您的日期值似乎是JavaScript日期。 Angular已经为格式化的日期输出提供了一个过滤器:
{{trip.start | date:'yyyy-MM-dd'}}
或者,您可以将日期转换为字符串:
function formatDate(date) {
var date = date || new Date();
var today = new Date(date);
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) dd = '0' + dd;
if (mm < 10) mm = '0' + mm;
return (yyyy + '-' + mm + '-' + dd);
}