【问题标题】:How to parse /Date(-62135596800000)/ to null如何将 /Date(-62135596800000)/ 解析为 null
【发布时间】:2017-03-06 13:28:00
【问题描述】:

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

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

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

【问题讨论】:

  • 什么时候需要一个空字符串?
  • 如果日期是 /Date(-62135596800000)/?我知道我可以使用 if,但我正在寻找更好的解决方案
  • 只是为了那个单一的输入?我认为没有比使用简单的if 语句更好的解决方案

标签: angularjs date momentjs


【解决方案1】:

那么您的服务器正在返回 null 或日期字符串。 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 '';
}

【讨论】:

    【解决方案2】:

    过滤器可以这样改进:

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

    【讨论】:

    • 通常不鼓励使用纯代码和“试试这个”的答案;尝试解释改变是什么以及为什么它应该起作用。
    • 我以为您想将空数据解析为空字符串。如果您还想将负值解析为空字符串,则应检查数据是否为正。我已经用数据肯定检查更新了我的答案。
    【解决方案3】:

    首先确定您的最短日期。
    例如 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") : "";
        };
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2017-08-17
      • 2021-12-25
      • 2012-08-08
      • 1970-01-01
      相关资源
      最近更新 更多