如何在输入类型=“日期”中解析日期?

时间:2017-05-11 05:11:33

标签: angularjs date

当我使用<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

如果你有想法解析它,请帮助。

5 个答案:

答案 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);
}