JqueryUI datepicker在dateFormat上返回无效日期

时间:2016-05-25 09:40:21

标签: jquery jquery-ui datepicker

我有两个带有dateFromat属性的日期选择器,我在调试器中获得以下值:

dateText = "27.05.2016"

begin = Invalid Date {}

d=NaN

m=NaN

y=NaN

有没有办法让这个日期格式适合我的例子?我认为Date()函数无法将此日期格式的值转换为日期...

没有dateFormat的示例:http://jsbin.com/yuxaliqoba/edit?html,output

dateFormat的示例:http://jsbin.com/hihidihexo/edit?html,output

  <input class="datepicker begin" type="text" />
  <input class="datepicker end" type="text"/>
  <script>
    $(function () {
        $(".datepicker.begin").datepicker({
            minDate: '+2d',
            maxDate: '+2y',
            dateFormat: 'dd.mm.yy',
            onSelect: function(dateText, inst) {
               // Resolve the current date
               var begin = new Date($(this).val());
               var d = begin.getDate();
               var m = begin.getMonth();
               var y = begin.getFullYear();
               // Update your target date
               $(".datepicker.end").datepicker('setDate', new Date(y, m, d+2));
               $(".datepicker.end").datepicker( "option", "minDate",  d - 10);
            }
        });
        $(".datepicker.end").datepicker({
            dateFormat: 'dd.mm.yy',
            minDate: '+4d',
            maxDate: '+2y'
        });
    });
  </script>

1 个答案:

答案 0 :(得分:1)

您的问题源于27.05.2016是无效日期的事实。正如你在这个小提琴中看到的那样。

https://jsfiddle.net/mp64p6Lw/2/

使用27.05.2016实例化新的日期对象返回&#34;无效的日期&#34;。因此,调用get *()将不会返回您期望的内容。

我建议将日期格式更改为ISO 8601日期格式,以便日期操作更稳定。

var dateISO = new Date('2016-05-27');

当您实例化日期选择器时,您需要将dd.mm.yy更改为yy-mm-dd