如何删除日期格式中的前导零作为字符串

时间:2018-10-04 21:11:07

标签: javascript jquery

使用here中的jquery日历,基本上将禁用日期的背景颜色更改为红色

 <input id="iDate">

<script>
  var unavailableDates = ["09-10-2018", "14-09-2018", "15-10-2018"];

  function unavailable(date) {
      dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
      if ($.inArray(dmy, unavailableDates) == -1) {
          return [true, ""];
      } else {
          return [false, "", "Unavailable"];
      }
  }

  $(function() {
      $("#iDate").datepicker({
          dateFormat: 'd-m-yy',
          beforeShowDay: unavailable
      });

  });
</script>

如您所见,我有3个禁用的日期,由于日期和月份的前导零,我的日历中没有禁用“ 09-10-2018”和“ 14-09-2018”,但是当我尝试删除时每天工作的零点。

我也看着here,但我不理解

unavailaDates来自数据库,因此它没有经过硬编码,这就是为什么它在日和月中生成前导零的原因。

我感谢任何帮助我的人。 我是初学者 对不起,英语不好

3 个答案:

答案 0 :(得分:1)

问题是date.getDate()date.getMonth()返回整数,不能有前导零,因此永远不会匹配。

简单修复,创建一个函数:

function pad(num) {
  var s = "" + num;
  if ( num < 10 ) {
    s = "0" + num; 
  }
  return s;
}

然后做:

dmy = pad(date.getDate()) + "-" + pad(date.getMonth() + 1) +
      "-" + date.getFullYear();

答案 1 :(得分:0)

您可以使用padStart并比较两种格式:

var unavailableDates = ["01-10-2018", "2-10-2018", "13-10-2018"];

function unavailable(date) {
    var dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    var dmy2 = ((date.getDate()+'').padStart(2,'0')) + "-" + (((date.getMonth() + 1)+'').padStart(2,'0')) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) == -1 && $.inArray(dmy2, unavailableDates) == -1) {
        return [true, ""];
    } else {
        return [false, "", "Unavailable"];
    }
}

$(function() {
    $("#iDate").datepicker({
        dateFormat: 'dd-mm-yy',
        beforeShowDay: unavailable
    });

});
.ui-datepicker td.ui-state-disabled>span{background:#c30;}
.ui-datepicker td.ui-state-disabled{opacity:100;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link  rel="stylesheet" type="text/css"  href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.17/themes/black-tie/jquery-ui.css"/>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.17/jquery-ui.min.js"></script>

<input id="iDate">

答案 2 :(得分:0)

我认为@Bryanh可能在起作用。 但是直接回答您的问题是:

let d = '09-10-2018';
let newD = d.split('-').map(n=>{
    return parseInt(n)
}).join('-')
console.log(newD);
相关问题