当年份为yy格式时,我如何用Javascript解释正确的日期
How I can interpret the correct date in Javascript when the year is of the format yy?
我定义了一个只接受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>
相关文章:
- Appcelerator Titanium:在运行时下载并解释JavaScript代码
- 解释javascript中的+var和-var一元运算符
- 需要解释Javascript regex请求参数解析
- 解释 JavaScript 中数字的行为
- 请解释Javascript图像旋转代码
- 有人可以向我解释javascript getCookie()中while循环的功能吗?
- 有人可以帮助解释JavaScript中的这个正则表达式吗?
- Mozilla不能很好地解释JavaScript
- 任何人都可以解释JavaScript中的reduce函数吗?
- 解释JavaScript和php代码
- 一些帮助解释javascript函数
- 您将如何向初学者解释Javascript中的回调函数
- 有人能用一个真实的例子来解释JavaScript中函数和方法的区别吗
- 解释JavaScript中的变量作用域
- 解释JavaScript安全扫描警告
- 用Rhino在Java中解释JavaScript:暂停/恢复脚本
- 通过分解成更小的部分来解释javascript正则表达式
- 解释Javascript文件Laravel中的变量
- 需要解释javascript中的作用域问题
- 它“安全”吗?使用注释来解释Javascript中的函数