我正在使用HTML日期函数和javascript来获取YYYY-mm-dd中的确切日期。除了每月的第一天,它对我来说都很好。 例如:2016年2月1日转换为2016-01-32
function mydate1(cachedDate) {
var today = new Date();
console.log(today);
if (cachedDate === undefined) {
console.log("no cached value found");
var d = new Date(document.getElementById("dt").value);
sessionStorage.setItem('dateCached', document.getElementById("dt").value);
console.log(d);
//sessionStorage.setItem('dropdownCached',document.getElementById("s1").value);
console.log("set session value :" + sessionStorage.getItem('dateCached'));
} else {
var d = new Date(cachedDate);
console.log(document.getElementById("dt").value);
sessionStorage.setItem('dateCached', d);
console.log("set session value :" + sessionStorage.getItem('dateCached'));
}
if (today < d) {
alert("No Record Found ..... ");
return;
}
dt = d.getDate();
dt++
dt = ('0' + dt).slice(-2);
mn = d.getMonth();
mn++;
mn = ('0' + mn).slice(-2);
yy = d.getFullYear();
var x = yy + "-" + mn + "-" + dt;
document.getElementById("ndt").value = dt;
ajaxFunction('dt');
console.log(x);
}
&#13;
<input type="date" class="form-control" id="dt" onchange="mydate1();" />
<input type="text" id="ndt"/>
&#13;
我尝试了谷歌的几个解决方案,但没有什么对我有用..有人可以帮我修复脚本。
答案 0 :(得分:0)
虽然我无法在上面的代码中找到确切的错误....但我设法部分解决了问题(需要添加代码来验证月份&gt; 12并根据需要更改年份)
dt = d.getDate();
dt++
dt = ('0' + dt).slice(-2);
mn = d.getMonth();
mn++;
mn = ('0' + mn).slice(-2);
yy = d.getFullYear();
var x = yy + "-" + mn + "-" + dt;
var y = new Date(yy, mn, 0);
dd = y.getDate();
if (dd < dt) {
console.log("in test.....");
mn++;
mn = ('0' + mn).slice(-2);
var x = yy + "-" + mn + "-" + '01';
console.log("test" + x);
}
答案 1 :(得分:0)
首先,您不应该增加getDate()
返回的值,因为
getDate()
返回的值是1到31之间的整数。
这与getMonth()
形成对比,其中
getMonth()
返回的值是0到11之间的整数。
其次,在构造新的Date
对象时可能try specifying the time zone:
var d = new Date(document.getElementById("dt").value + "(GMT)");
Date.parse()
method is implementation-dependent,因此在解析日期字符串时可能会遇到不一致。在我的浏览器(Chrome 47)中,如果要解析的字符串在末尾包含空格,我会看到不同的Date
个对象:
d = new Date("2016-02-01")
Sun Jan 31 2016 17:00:00 GMT-0700 (Mountain Standard Time)
d = new Date("2016-02-01 ")
Mon Feb 01 2016 00:00:00 GMT-0700 (Mountain Standard Time)