我注意到Date.Parse
只能处理2位数日期。
说我有这个
mm/dd/yy = 7/11/20
日期解析会认为它是= 7/11/1920
。你可以把它设置为使用一年两千?就像它有点奇怪我得到了jquery u.i日期选择器,如果你输入7/11/20
它会找出2020
。
所以,如果Date.parse
可以跟上,我会很高兴我不是都知道发生了什么,或者都知道发生了什么,然后知道一个知道的和一个不知道的。
答案 0 :(得分:5)
不是我知道的。但你可以随时调整年份:
YourDate="7/11/20";
DateObj=new Date(YourDate.replace(/(\d\d)$/,"20$1"));
alert(DateObj);
修改:以下代码将处理完整年份和短年份:
YourDate="7/11/2020";
DateObj=new Date(YourDate.replace(/\/(\d\d)$/,"/20$1"));
alert(DateObj);
答案 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));