Moment.js Неверное сообщение о дате

1

Im исследуя moment.js с Datatables, и он действительно хорош для отображения даты в формате, который я хочу, но есть проблема, которая у меня есть с данными, которые я конвертирую. Если дата недействительна, она показывает сообщение INVALID DATE, wihch - это хорошо, но не то, что я действительно хочу. Возможно ли, чтобы показать сообщение "Недействительная дата", показать, что там было изначально? Например, если это не дата, я хочу посмотреть, что это такое, а не это сообщение.

Спасибо!

EDIT: Спасибо за помощь, ребята! Я сделал это для datatable "aoColumns":

{     "mData": "APE",
      "render": function(mData){
            if(mData != null){
                if(moment(mData).format("DD/MM/YYYY")== 'Invalid date')
                    {
                        return mData;                       
                    }
                else
                    {
                    return moment(mData).format("DD/MM/YYYY");
                    }
            }                               
                               },
        sDefaultContent: ''},
  • 1
    ты что-нибудь пробовал?
  • 3
    добавить код, а затем попросить помощи.
Показать ещё 1 комментарий
Теги:
datatable
momentjs

3 ответа

2
Лучший ответ

В зависимости от того, как вы реализовали Moment.js, вы могли просто проверить возвращаемое значение с момента? Например

var prettyDate = moment()...;

if(prettyDate != 'Invalid date') {
    // set your date
}
  • 0
    похоже, это может сработать! Я попытаюсь! Спасибо
2
moment.updateLocale(moment.locale(), { invalidDate: "ur msg or NaN/null" });
  • 1
    Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из обзора
  • 1
    momentjs.com/docs/#/customization
2

var dateStr = "aw 2017-06- awd 09 10:05:21.0";
//var dateStr = "a2017-06-09 10:05:21.0";
if(moment(dateStr, moment.ISO_8601).isValid()){
  alert("Valid Date: " + moment(dateStr).format('MM/DD/YYYY'));
}
else  {
  alert("Invalid Date: " +dateStr);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Попробуйте создать свою собственную функцию, когда вы проверяете, действительна ли дата или нет, см. Подтверждение времени, а если оно недействительно, верните исходные данные для сообщения.

Обновление: см. Этот пост для дополнительного объяснения фрагмента кода

  • 0
    Спасибо за помощь! :) Не использовал это, но это может быть хорошим решением! Я отредактировал свой вопрос с решением, которое работало для меня.
  • 0
    @Jack +1 за хороший ответ, но учтите, что ваш фрагмент кода выдает Deprecation warining, пожалуйста, используйте функцию разбора moment(String, String) чтобы избежать этого, как показано здесь . (Может быть, вы также можете обновить текущую версию до последней)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню