首页 > 解决方案 > 如何针对不同的条件将日期设置为 ISOString

问题描述

我正在尝试根据不同的条件设置未来的日期,然后使用 ISOString 方法将日期转换为字符串。这是代码示例;

<input type="text" name="unknown" id="dater" />

<p id="show"></p>

<button id="but">Show Date</button>

拥有脚本:

var text = document.getElementById("dater");
var date = new Date();
var n = date.setDate(date.getDate() + 12);
var x = date.toISOString()
var y = x.slice(0, -14);

document.getElementById("show").innerHTML = y;

结果:

2018-05-27

输出基于今天的日期,即“2018-05-15”。现在我想根据不同的条件设置不同的日期。我尝试了以下方法:

var pres = document.getElementById("but").addEventListener("click", now)

function now() {

var text = document.getElementById("dater");
var date = new Date();
var n = date.setDate(date.getDate() + 12);
var x = date.toISOString()
var y = x.slice(0, -14);

if(text.value == 5) { n = date.setDate(date.getDate() + 15)

 } else if(text.value == 12) { n = date.setDate(date.getDate() + 22)

} else { n = date.setDate(date.getDate() + 3) }

document.getElementById("show").innerHTML = y;

 }

如果我在文本字段中输入 5、12 或 3,则单击按钮时不会发生任何事情。它只返回相同的日期“2018-05-27”。但是,如果我说

document.getElementById("show").innerHTML = n; 

或者

document.getElementById("show").innerHTML = n.toISOString();

它以毫秒为单位返回日期。

标签: javascripthtml

解决方案


我认为这段代码会对你有所帮助。您没有将变量转换为 Date 对象。

    window.onload = function () {
        var pres = document.getElementById("but").addEventListener("click", now);
    }

    function now() {

        var text = document.getElementById("dater");
        var date = new Date();
        var n = date.setDate(date.getDate() + 12);
        var x = date.toISOString()
        var y = x.slice(0, -14);

        if (text.value == 5) {
            n = date.setDate(date.getDate() + 15)

        } else if (text.value == 12) {
            n = date.setDate(date.getDate() + 22)

        } else { n = date.setDate(date.getDate() + 3) }

        document.getElementById("show").innerHTML = new Date(n).toISOString();

    }

推荐阅读