Javascript 如何将(格式良好的)字符串变量分配给<;输入类型=";日期“/&燃气轮机;价值
我试图将一个格式良好的字符串变量(yyyy-mm-dd)指定给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
的值,该变量表示一个日期。当值是字符串文字时,它工作,但是当它来自变量或常量时,它不工作。您可以检查以下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-谢谢您的评论,从下次开始,我将添加一个适当的解释。