我正在尝试使用bootstrap datepicker插件(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;
}
});
它可以(几乎)正常工作。它会禁用错误的日期。它禁用了24.03.2014而不是禁用23.03.2014。 我不确定问题出在哪里,也许在时区上?有什么建议吗?
答案 0 :(得分:4)
查看插件内部,我发现$.fn.datepicker.DPGlobal.formatDate
返回UTC格式的字符串而不是GMT。尝试将 formattedDate 变量的设置更改为:
var formattedDate = date.toLocaleDateString('pl',{day:'2-digit',year:'numeric',month:'2-digit'});
答案 1 :(得分: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;
}
});