如何解析/日期(-62135596800000)/为空

时间:2017-03-06 13:28:00

标签: angularjs date momentjs

我从服务器日期(有时是null)和我的过滤器解析/Date(-62135596800000)/0001-01-01,但我想要空字符串。

我该怎么做? 这是我的过滤器:

filter('myDateFormat', function() {
    return function (data) {
        return moment(data).format("YYYY-MM-DD");
    };
})

3 个答案:

答案 0 :(得分:1)

您的服务器返回null或日期字符串。 null可以通过简单的空值检查来处理,但对于您的其他输入"Date(-62135596800000)"这是一个有效的日期,您无法返回空字符串,而无需显式检查它。

moment(Date(-62135596800000)).isValid() // return 'true'

您可以尝试以下代码。

// if inputDate not defined or null    
if (!inputDate || inputDate == null) {
       return '';
} else if (moment(inputDate).isValid()){
       return moment(inputDate).format("DD MM YYYY");
} else {
       return '';
}

但如果您的服务器偶尔返回此特定日期'日期(-62135596800000)'并且你想避免这种情况,你可以对它进行明确的检查。

if (!inputDate || inputDate == null) {
   return '';
} 

if (inputDate == 'Date(-62135596800000)') {
     return '';
} else if (moment(inputDate).isValid()) {
     return moment(inputDate).format("DD MM YYYY");
} else {
     return '';
}

答案 1 :(得分:0)

过滤器可以像这样改进:

posix_spawn

答案 2 :(得分:0)

首先确定你的最低日期应该是什么 例如,SQL的最小日期为1753-01-01
之后,将您的日期与最低日期进行比较,例如:

filter('myDateFormat', function() {
    return function (data) {
        var minDate = moment('1753-01-01');// decide your minimum date
        return moment(data).diff(minDate) > 0 ? moment(data).format("YYYY-MM-DD") : "";
    };
})