当年份的格式为yy时,如何用Javascript解释正确的日期?

当年份的格式为yy时,如何用Javascript解释正确的日期?,javascript,jquery,html,Javascript,Jquery,Html,我定义了一个只接受HTML中日期的输入。 用户可以手动或使用javascript中定义的日历输入日期。 我正在使用Javascript和Jquery将输入转换为日期: var lStartDateText = $j("#DateStarte").val(); var lEndDateText = $j("#DateEnd").val(); var lEffStartDate = new Date(lStartDateText); var lEffEndDate = new Date(lEndDa

我定义了一个只接受HTML中日期的输入。 用户可以手动或使用javascript中定义的日历输入日期。 我正在使用Javascript和Jquery将输入转换为日期:

var lStartDateText = $j("#DateStarte").val();
var lEndDateText = $j("#DateEnd").val();
var lEffStartDate = new Date(lStartDateText);
var lEffEndDate = new Date(lEndDateText);
我的问题是,当用户手动输入以下日期时,1/1/50被解释为1/1/1950,而1/1/49被解释为1/1/2049。我希望它总是被解释为20xx

另一方面,日历允许用户选择从2006年到2021年的一年,以防用户希望从日历中选择日期,而不是手动输入日期


希望我能在这里得到一些帮助???

如果你知道你得到的是一年中的最后两位数(
50
),并且你知道你总是想添加前两位数,这是一个常量(
20
),这是对你的代码的轻微修改:

var lStartDateText = '20' + $j("#DateStarte").val();
var lEndDateText = '20' + $j("#DateEnd").val(); 
请注意,这并不是特别可靠,例如,如果用户输入的文本不是日期,您可能会以类似
'20hi'
的字符串结束,但这可能超出了您的问题范围,并且将被解析为无效日期

$('year')。在('change keyup',function()上{
变量y=$('年').val();
如果(y.length==2){
y='20'+y
}
如果(y.长度===4){
var dateY=新日期();
日期:整年(y);
$('#result').html(dateY);
}否则{
$('#result').html('未找到YY或YYYY日期');
}
})

输入年份(YY或YYYY)
试试这个

var lStartDateText = $j("#DateStarte").val();
var lEndDateText = $j("#DateEnd").val();

var lEffStartDate = ReFormatDate(lStartDateText);
var lEffEndDate = ReFormatDate(lEndDateText);

function ReFormatDate(dateString) {
    var dateParts = dateString.split("/");
    if (dateParts[2].length === 2) {
        dateParts[2] = "20" + dateParts[2];
    }
    return new Date(dateParts.join("/"));
}
用这个

var lStartDateText=“1/1/50”;
var lendatetext=“1/1/49”;
var res=lStartDateText.slice(4);
var starttext=lStartDateText.replace(分辨率,“20”+res);
var res1=lEndDateText.slice(4);
var endtext=lEndDateText.replace(res1,“20”+res1);
警报(starttext);
警报(endtext);
var lEffStartDate=新日期(starttext);
警报(“开始日期”+lEffStartDate);
var lEffEndDate=新日期(endtext);

警报(“结束日期”+结束日期)我希望它能对您有所帮助。
$('year')。在('change keyup',function()上{
var right_date=$('#year').val();
var数据=$(“#年”).val().split(“/”);
if(数据[2]。长度==2){
var twoDigitsCurrentYear=parseInt(新日期().getFullYear().toString().substr(0,2));
$(“#result').html(数据[0]+'/'+数据[1]+'/'+两位数当前年份+数据[2]);
} 
否则{
$('#result').html(右日期);
}
})

输入年份(YY或YYYY)

Java不是Javascript,你知道的,对吧?这是个笑话。您是否考虑过使用Moment.js:?我提供了许多格式化日期对象的方法。@Abadi什么是笑话?如果我不引入新的库会更好。我会验证用户输入的日期。我只需要检查用户是否以“yy”而不是“yyyy”的形式输入日期。Abadi请参阅我的示例以获得一个相当完整的解决方案。