3

我的日期格式是一位数的月份(没有前导零),后跟两位数的日期和两位数的年份。

2013 年 1 月 1 日 = 10113

我正在尝试将具有正确格式的日期选择器附加到它,但它的格式不正确。

http://jsfiddle.net/S3KyX/1/

<input type="text" id="date" value="10113">
$("#date").datepicker({ dateFormat: 'mddy'});

当日期选择器弹出时,它的日期是 2003 年 10 月 11 日。

4

1 回答 1

3

不幸的是,您的格式不起作用。如果您查看 的实现datepicker formatDate,您会发现m它会尝试匹配 1 位或 2 位数字,因为它无法提前判断您的意思是 1 月而不是 10 月,

这个方法是这样调用的,getNumber('m'):

var getNumber = function(match) {
    var isDoubled = lookAhead(match);
    var size = (match == '@' ? 14 : (match == '!' ? 20 :
            (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));
    var digits = new RegExp('^\\d{1,' + size + '}');
    var num = value.substring(iValue).match(digits);
    if (!num)
        throw 'Missing number at position ' + iValue;
    iValue += num[0].length;
    return parseInt(num[0], 10);
};

如您所见,“m”的大小为 2,因此它将匹配 2 位数字!如有疑问,请在代码中放置断点并查看会发生什么(这就是我刚刚所做的,使用 chrome 开发人员工具)

于 2013-01-15T17:08:14.117 回答