5

我正在尝试使用引导日期选择器插件(https://github.com/eternicode/bootstrap-datepicker/blob/release/docs/index.rst),其中传递了一系列禁用天数。

我的代码(部分):

 var disabled_dates = ["23.03.2014","21.03.2014"];
 $("#datepicker").datepicker({
      language: "pl",
      autoclose: true,
      startDate: '+1d',
      weekStart: 1,
      default: 'dd.mm.yyyy',
      beforeShowDay: function(date){
           var formattedDate = $.fn.datepicker.DPGlobal.formatDate(date, 'dd.mm.yyyy', 'pl');
           if ($.inArray(formattedDate.toString(), disabled_dates) != -1){
               return {
                  enabled : false
               };
           }
          return;
      }
  });

它(几乎)工作正常。它禁用错误的日期。它没有禁用 23.03.2014,而是禁用了 24.04.2014。我不确定问题出在哪里,也许在时区?有什么建议么?

4

2 回答 2

4

查看插件内部,我发现$.fn.datepicker.DPGlobal.formatDate返回的是 UTC 格式的字符串而不是 GMT。尝试将formattedDate变量的设置更改为:

var formattedDate = date.toLocaleDateString('pl',{day:'2-digit',year:'numeric',month:'2-digit'});
于 2014-03-22T02:05:02.390 回答
2

您只需要删除行“startDate:'+1d'”,当您有可用的日期数组时使用它没有任何意义。无论如何,您可以添加新的 Date() 函数来获取实际日期。

它会是这样的:

 //here you store new Date() Object to get today's date formatted as you want dd.mm.yyy

 var disabled_dates = ["23.03.2014","21.03.2014"];
 $("#datepicker").datepicker({
      language: "pl",
      autoclose: true,
      //removed line: startDate: '+1d',
      weekStart: 1,
      default: 'dd.mm.yyyy',
      beforeShowDay: function(date){
           var formattedDate = $.fn.datepicker.DPGlobal.formatDate(date, 'dd.mm.yyyy', 'pl');
           if ($.inArray(formattedDate.toString(), disabled_dates) != -1){
               return {
                  enabled : false
               };
           }
          return;
      }
  });
于 2014-03-26T20:32:04.107 回答