最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to replace a default date with an empty string - Stack Overflow

programmeradmin5浏览0评论

I have a html span that display a date using moment.js in the page:

<span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span>

It's working fine apart if the dueDate() property is an empty string, If it's an empty string I'm getting:

01/01/1900

How can avoid that?

This is the entire div:

<div class="col-md-8">
    <ul>
      <li>DATE <span data-bind="text: moment(new Date(sDate())).format('MM/DD/YYYY')"></span></li>
      <li>Due date <span></span><span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span>
           <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p>
      </li>
      <li>Date 2 <span></span><span data-bind="text: moment(new Date(date2())).format('MM/DD/YYYY')"></span>
           <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p>
      </li>
    </ul>
</div>

I have a html span that display a date using moment.js in the page:

<span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span>

It's working fine apart if the dueDate() property is an empty string, If it's an empty string I'm getting:

01/01/1900

How can avoid that?

This is the entire div:

<div class="col-md-8">
    <ul>
      <li>DATE <span data-bind="text: moment(new Date(sDate())).format('MM/DD/YYYY')"></span></li>
      <li>Due date <span></span><span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span>
           <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p>
      </li>
      <li>Date 2 <span></span><span data-bind="text: moment(new Date(date2())).format('MM/DD/YYYY')"></span>
           <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p>
      </li>
    </ul>
</div>
Share Improve this question edited Dec 2, 2016 at 8:23 user3378165 asked Dec 2, 2016 at 8:13 user3378165user3378165 6,93618 gold badges66 silver badges108 bronze badges 4
  • use a if condition, test if the string is empty – xShirase Commented Dec 2, 2016 at 8:17
  • I'm not sure how to add an if in this context. – user3378165 Commented Dec 2, 2016 at 8:18
  • You can check the answer to this question stackoverflow./questions/10577078/… – Shekhar Chikara Commented Dec 2, 2016 at 8:19
  • data-bind="text: dueDate()? moment(dueDate(), format).format('MM/DD/YYYY')". Also, I'd suggest you to make dueDate a string variable and process values in your vm instead of view – Rajesh Commented Dec 2, 2016 at 8:19
Add a ment  | 

1 Answer 1

Reset to default 3

You will have to add a check. If value exists, then parse value, else show blank.

this.getDateInFormat = function(str){
  var d = moment(str, DEFAULT_FORMAT);
  return str && d.isValid() ? d.format('MM/DD/YYYY') : '';
}

As mented before, you should move all parsing logic to your viewModel. This way your code is generic and your view is clean.

JSFiddle.

发布评论

评论列表(0)

  1. 暂无评论