5
4

5 回答 5

9

为您的格式使用设置默认值。

$.datepicker.setDefaults({
     dateFormat: 'yy-mm-dd'
});

现在您的日期显示正确的格式(即 2013-06-12)

正确的格式

在这里更新了 JSFiddle:http: //jsfiddle.net/jaaqs/3/

于 2013-06-07T01:00:41.550 回答
3

您为日期选择器指定的日期格式 ( )yy-mm-dd与默认日期格式 ( mm/dd/yy) 不同。在您的代码中,UI 尝试解析2013-01-01为哪个不解析(该函数在看到 a而不是mm/dd/yy时放弃)。1/

可能的修复是:

A. 明确使用您在 datepicker 选项中指定的相同日期格式:

$("#datepicker").datepicker({
    dateFormat: "yy-mm-dd",
    beforeShowDay: function (date) {
        var date1 = $.datepicker.parseDate("yy-mm-dd", $("#input1").val());
        var date2 = $.datepicker.parseDate("yy-mm-dd", $("#input2").val());
        // ...

B. 按需获取 dateFormat:

$("#datepicker").datepicker({
    beforeShowDay: function (date) {
        var date1 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input1").val());
        var date2 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input2").val());
        // ...

在上面的示例中,$(this).datepicker("option", "dateFormat")将返回当前 datepicker 使用的日期格式(无论是明确指定还是继承自 datepicker 默认值)。

于 2014-01-20T07:05:00.687 回答
1

你的日期格式是问题

$(function() {
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd",
        beforeShowDay: function(date) {
            var date1 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input1").val());
            var date2 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input2").val());
            return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
        },
        onSelect: function(dateText, inst) {
            var date1 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input1").val());
            var date2 = $.datepicker.parseDate($(this).datepicker("option", "dateFormat"), $("#input2").val());
            if (!date1 || date2) {
                $("#input1").val(dateText);
                $("#input2").val("");
                $(this).datepicker("option", "minDate", dateText);
            } else {
                $("#input2").val(dateText);
                $(this).datepicker("option", "minDate", null);
            }
        }
    });
});

演示:小提琴

于 2013-06-07T01:03:03.303 回答
0

您还可以在 datepicker 的 JS 文件中更改日期格式设置

在第 26 行

你有这个

   this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');

您可以将其更改为您想要的任何内容,例如 GMT(英国日期设置)

        this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'dd/mm/yyyy');

然而,这是一个全球性的变化

于 2014-10-17T13:22:43.300 回答
0

我不确定为什么,但是将格式化从大初始化块中移出是可行的。

http://jsfiddle.net/jaaqs/2/

$(function() {
    $("#datePicker").datepicker({dateFormat: "mm-dd-yy"});

  $("#datepicker").datepicker({
    beforeShowDay: function(date) {
      var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
      var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
      return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
    },
    onSelect: function(dateText, inst) {
      var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
      var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
      if (!date1 || date2) {
        $("#input1").val(dateText);
        $("#input2").val("");
        $(this).datepicker("option", "minDate", dateText);
      } else {
        $("#input2").val(dateText);
        $(this).datepicker("option", "minDate", null);
      }
    }
  });

});
于 2013-06-07T00:54:47.663 回答