Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将(格式良好的)字符串变量分配给<;输入类型=";日期“/&燃气轮机;价值_Javascript_Html_Date_Input - Fatal编程技术网

Javascript 如何将(格式良好的)字符串变量分配给<;输入类型=";日期“/&燃气轮机;价值

Javascript 如何将(格式良好的)字符串变量分配给<;输入类型=";日期“/&燃气轮机;价值,javascript,html,date,input,Javascript,Html,Date,Input,我试图将一个格式良好的字符串变量(yyyy-mm-dd)指定给的值,该变量表示一个日期。当值是字符串文字时,它工作,但是当它来自变量或常量时,它不工作。您可以检查以下html代码和呈现的html页面 沿岸转让: 变量分配: var literalDateControl=document.querySelector('input[name=“literalDate”]”); literalDateControl.value=“2019-07-24”; var today=新日期(); cons

我试图将一个格式良好的字符串变量(yyyy-mm-dd)指定给
的值,该变量表示一个日期。当值是字符串文字时,它工作,但是当它来自变量或常量时,它不工作。您可以检查以下html代码和呈现的html页面


沿岸转让:

变量分配:

var literalDateControl=document.querySelector('input[name=“literalDate”]”); literalDateControl.value=“2019-07-24”; var today=新日期(); const todayValue=today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate(); var variableDateControl=document.querySelector('input[name=“variableDate”]”); variableDateControl.value=todayValue;
是否要将日期设置为当前日期

通过修改日期原型使其能够使用.yyyymmdd(),在上有一个有趣的答案在您的日期获取字符串YYYY-MM-DD

    Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('-');
    };
    var literalDateControl = document.querySelector('input[name="literalDate"]');
    var today = new Date();
    literalDateControl.value = today.yyyymmdd();

    const todayValue = today.getFullYear()+'-'+(today.getMonth()+1) +'-'+ today.getDate();
    var variableDateControl = document.querySelector('input[name="variableDate"]');
    variableDateControl.value = today.toString();

问题是你的月份不是两位数。有很多方法可以0填充单个数字,但可能如下所示:

const getMonth=date=>`${date.getMonth()+1<10?'0':'}${date.getMonth()+1}`;
const today=新日期();
const todayTest=today.getFullYear()+'-'+getMonth(today)+'-'+today.getDate();
const fixedTest=“2019-07-24”;
document.querySelector('.a')。value=todayTest;
document.querySelector('.b')。value=fixedTest;
console.log(今天测试)
console.log(固定测试)

您的
今日值中没有月后的前导零,因此您实际上只有
yyyy-m-dd
todayValue
2019-7-24
,日期输入应为
2019-07-24
。您可以通过手动插入零来验证这一点:

const todayValue = today.getFullYear()+'-'+'0'+(today.getMonth()+1) +'-'+ today.getDate();
有一个很好的解决方案,我将对此稍作调整:

todayValue = today.getFullYear() + '-'
             + ('0' + (today.getMonth()+1)).slice(-2) + '-'
             + ('0' + today.getDate()).slice(-2)
对该答案的解释:

为了进行解释,
.slice(-2)
给出了字符串的最后两个字符

因此,不管怎样,我们都可以在日期或月份[string]中添加
“0”
,只需请求最后两个[character],因为它们始终是我们想要的两个

值得注意的是,由于今天是第24天,您只会在日期的月份部分遇到此问题,但目前来看,下个月初将出现与今天相同的问题。getDate()
还返回未填充的数字。因此,请确保当您为当月求解时,您会以相同的方式为当天求解。

**month的格式不正确**
**Month is not in correct format.**
<!DOCTYPE > 
<html>
<head><title>input date</title></head>
<body>
  <form>
    <p>Litteral Assignement: <input name="literalDate" type="date" /></p>
    <p>Variable Assignement: <input name="variableDate" type="date" /></p>
  </form>
  <script>
    var literalDateControl = document.querySelector('input[name="literalDate"]');
    literalDateControl.value = "2019-07-24";

    function formatDateToString(date){
   // 01, 02, 03, ... 29, 30, 31
   var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
   // 01, 02, 03, ... 10, 11, 12
   var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
   // 1970, 1971, ... 2015, 2016, ...
   var yyyy = date.getFullYear();

   // create the format you want
   return (yyyy + "-" + MM + "-" + dd);
}
    var today = new Date();

    var variableDateControl = document.querySelector('input[name="variableDate"]');
    variableDateControl.value = formatDateToString(today);
  </script>
</body>
</html>
输入日期 沿岸转让:

变量分配:

var literalDateControl=document.querySelector('input[name=“literalDate”]”); literalDateControl.value=“2019-07-24”; 函数formatDateToString(日期){ // 01, 02, 03, ... 29, 30, 31 var dd=(date.getDate()<10?'0':'')+date.getDate(); // 01, 02, 03, ... 10, 11, 12 var MM=((date.getMonth()+1)<10?'0':'')+(date.getMonth()+1); // 1970, 1971, ... 2015, 2016, ... var yyyy=date.getFullYear(); //创建所需的格式 返回(yyyy+“-”+MM+“-”+dd); } var today=新日期(); var variableDateControl=document.querySelector('input[name=“variableDate”]”); variableDateControl.value=formatDateToString(今天);
格式为yyyy-mm-dd。您的(today.getMonth()+1)结果将为7,您需要添加07。请注意,
标记不使用,也不需要结束斜杠,而且在HTML中从未使用过。谢谢,这一个实际上更优雅。@Alessio-谢谢您的评论,从下次开始,我将添加一个适当的解释。