AngularJS过滤日期,仅显示年/月/日相同的时间

时间:2014-04-24 08:10:14

标签: angularjs date

我是AngularJS的新手,因为我有开始日期和结束日期的项目。如果两者的年/月/日相同,我希望仅显示结束日期的时间(HH.mm)。如果他们不同,我想展示一切。像这样:

{{item.bDate | date:'dd.MM.yyyy HH:mm'}} - {{item.eDate | date:'dd.MM.yyyy HH:mm' }}

有关如何做到这一点的任何提示?

2 个答案:

答案 0 :(得分:4)

将您的HTML更改为:

 {{item.bDate | date: getDateFormat(item.bDate, item.eDate) }}-
 {{item.eDate | date: getDateFormat(item.bDate, item.eDate) }}

并在您的控制器中创建此功能:

$scope.getDateFormat = function(bDate,eDate){
    var beginDate = new Date(bDate);
    var endDate = new Date(eDate);

    if (beginDate.getDate() == endDate.getDate())
        return 'HH:mm';
    else
        return 'dd.MM.yyyy HH:mm';
}

答案 1 :(得分:2)

您可以创建新的自定义过滤器:

.filter('enddate', function($filter){

    var filterDate = $filter('date');

    function datesEqual(endDate, startDate){
        return endDate.getDate() == startDate.getDate() &&
            endDate.getMonth() == startDate.getMonth() &&
            endDate.getYear() == startDate.getYear();
    }

    return function(endDate, startDate){
        return datesEqual(endDate,startDate) ? filterDate(endDate, 'HH:mm') : filterDate(endDate, 'dd.MM.yyyy HH:mm');
    };
})

查看:

{{item.bDate | date:'dd.MM.yyyy HH:mm' }} - {{item.eDate | enddate: item.bDate}}

Fiddle