HTML日期:以yyyy获取正确的日期 - mm - dd

时间:2016-02-02 19:51:01

标签: javascript html date datetime

我正在使用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;
&#13;
&#13;

我尝试了谷歌的几个解决方案,但没有什么对我有用..有人可以帮我修复脚本。

2 个答案:

答案 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)