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

How I can interpret the correct date in Javascript when the year is of the format yy?

本文关键字:解释 Javascript 何用 日期 yy 格式      更新时间:2023-09-26

我定义了一个只接受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被解释为1950年1月1日,而1/1/49被解释为2049年1月。我希望它总是被解释为20xx。

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

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

试试这个

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 lEndDateText = "1/1/49" ;
var res = lStartDateText.slice(4);
var starttext = lStartDateText.replace(res,"20"+res);
var res1 = lEndDateText.slice(4);
var endtext = lEndDateText.replace(res1,"20"+res1);
alert(starttext);
alert(endtext);
var lEffStartDate = new Date(starttext);
alert("start date"+lEffStartDate);
var lEffEndDate = new Date(endtext);
alert("End Date"+lEffEndDate);

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

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

请注意,这并不是特别健壮,例如,如果用户输入的文本不是日期,您可能会得到一个像'20hi'这样的字符串,但这可能超出了您的问题范围,它将被解析为无效日期。

$('#year').on('change keyup', function() {
  var y = $('#year').val();
  if (y.length === 2) {
    y = '20' + y
  }
  if (y.length === 4) {
    var dateY = new Date();
    dateY.setFullYear(y);
    $('#result').html(dateY);
  } else {
    $('#result').html('No YY or YYYY date found');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label for="year">Enter year (YY or YYYY)</label>
<input id="year" type="text">
<div id="result"></div>

我希望它能对你有所帮助。

	$('#year').on('change keyup', function() {
			var right_date = $('#year').val();
  			var data = $('#year').val().split('/');
		if (data[2].length == 2){
			var twoDigitsCurrentYear = parseInt(new Date().getFullYear().toString().substr(0,2));
			$('#result').html(data[0]+'/'+data[1]+'/'+twoDigitsCurrentYear + data[2]);
		} 
	    else {
	    $('#result').html(right_date);
	  }
})	
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label for="year">Enter year (YY or YYYY)</label>
<input id="year" type="text" placeholder="dd/mm/yy">
<div id="result"></div>