如何让javascript Date.parse了解短年?

时间:2010-07-12 01:30:51

标签: javascript jquery-ui datepicker

我注意到Date.Parse只能处理2位数日期。

说我有这个

mm/dd/yy = 7/11/20

日期解析会认为它是= 7/11/1920。你可以把它设置为使用一年两千?就像它有点奇怪我得到了jquery u.i日期选择器,如果你输入7/11/20它会找出2020

所以,如果Date.parse可以跟上,我会很高兴我不是都知道发生了什么,或者都知道发生了什么,然后知道一个知道的和一个不知道的。

4 个答案:

答案 0 :(得分:5)

不是我知道的。但你可以随时调整年份:

YourDate="7/11/20";
DateObj=new Date(YourDate.replace(/(\d\d)$/,"20$1"));

alert(DateObj);

This code in action.

修改:以下代码将处理完整年份和短年份:

YourDate="7/11/2020";
DateObj=new Date(YourDate.replace(/\/(\d\d)$/,"/20$1"));

alert(DateObj);

This code in action.

答案 1 :(得分:0)

所以你的问题是你是否可以改变Date.parse的工作方式,以便将低编号的两位数日期解释为2000年后的日期?

是的,可以完成,只需使用您自己的解析函数对Date.parse进行着色。

// don't do this!
Date.parse = function (str) { /* your parse routine here */ }

当然,对主机对象的属性(包括“方法”,即函数属性)进行阴影处理通常是一个非常糟糕的主意,因为它会导致其他脚本中的错误行为,这些脚本期望这些属性以某种方式工作。

使用两位数日期也是一个坏主意,但这可能超出您的控制范围。如果它不是你无法控制的,我建议你忘记两位数的日期并改用全年值。

答案 2 :(得分:0)

这是我的解决方案:

function parseDate(stringValue)
{
    var date = new Date(stringValue);
    if (!isNaN(date.getTime()))
    {
        // if they typed the year in full then the parsed date will have the correct year, 
        // if they only typed 2 digits, add 100 years to it so that it gets translated to this century
        if (stringValue.indexOf(date.getFullYear()) == -1)
        {
            date.setFullYear(date.getFullYear() + 100);
        }

        return date;
    }
    else
    {
        return null;
    }
}

答案 3 :(得分:-1)

这个怎么样?

var date = '7/11/20';
var idx = date.lastIndexOf('/') + 1;
date = date.substr(0,idx) + '20' + date.substr(idx);
var result = Date.parse(date);​
alert(result);

或此版本将首先测试YYYY格式。

var date = '7/11/2020'; 
var idx = date.lastIndexOf('/') + 1;
if(date.substr(idx).length < 4) {
    date = date.substr(0,idx) + '20' + date.substr(idx);
}
var result = Date.parse(date);
alert(new Date(result))​;​