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

HTML Date : Get Correct date in yyyy - mm - dd

本文关键字:日期 获取 mm yyyy HTML dd      更新时间:2023-09-26

我正在使用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);
}
<input type="date" class="form-control" id="dt" onchange="mydate1();" />
<input type="text" id="ndt"/>

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

首先,你不需要递增返回的值 getDate() ,因为

getDate()返回的值是介于 1 和 31 之间的整数。

这与getMonth()形成鲜明对比,其中

getMonth()返回的值是介于 0 和 11 之间的整数。

其次,您可以在构造新的Date对象时尝试指定时区:

var d = new Date(document.getElementById("dt").value + "(GMT)");

Date.parse() 方法依赖于实现,因此在分析日期字符串时可能会遇到不一致的情况。在我的浏览器 (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)

虽然我无法在上面的代码中找到确切的错误....但我设法部分解决了这个问题(需要添加代码来验证第> 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);
}