Проверьте, что дата больше 0001-01-01 в Moment.js

У меня есть функция, которая форматирует дату, используя,

export function FormatDate(date: string) {
if (date != null) {
    return moment.utc(date).format('DD MMM YYYY');
}
else
    return "";
}

Но проблема в том, что нулевые даты принимаются как "0001-01-01" (минимальное значение DateTime). как я могу проверить это с моментом JS?

Не могу найти прямой способ сделать это. Следующий код работает, но это некрасиво,

new moment("0001-01-01").format("DD MMM YYYY") == moment.utc(date).format("DD MMM YYYY")

"Дата", которую я получаю, находится в формате "/ Дата (-62135596800000)/".

Я старался, moment.utc(date).isAfter("0001-01-01") и это не работает, возвращает true.

Какой лучший способ проверить сериализованную дату не является минимальной датой?

2 ответа

Решение

Я думаю, что вы упускаете часть часового пояса при сравнении дат. Пожалуйста, посмотрите код ниже и дайте мне знать, если это то, что требуется:

var minDate = moment.utc("0001-01-01"); // minimum value as per UTC

var receiveDate = moment("/Date(-62135596800000)/"); // replace with variable
if(moment.utc(receiveDate).isAfter(minDate)){
     alert('yebo !');
}

Если ваша дата в формате С #, вы можете сделать это

          var dateObject = "/Date(-62135596800000)/";
    var ScriptDate = new Date(parseInt(dateObject.substr(6)));
    var minDate = moment.utc("0001-01-01");
    if(moment.utc(ScriptDate).isAfter(minDate)){ 
        console.log("Correct date"); 
    }else{ 
        console.log("Incorrect date"); 
    }
Другие вопросы по тегам