从HTML元素中获取日期并将其与今天的日期JS

时间:2017-09-29 00:24:12

标签: javascript html date compare element

我刚刚开始使用javascript进行编码,所以我没有得到所有的知识。

我想在HTML页面的元素中引用日期,并使用javascript警告用户日期已过去。

这是我到目前为止所做的:



var EndDate = document.getElementById("Close");
document.getElementById("AuctionDate").innerHTML = 
Date.parse(EndDate.innerHTML);
var TodaysDate = Date.parse(Date());
document.getElementById("TodaysDate").innerHTML = TodaysDate;
if (EndDate < TodaysDate) {
    alert("Closed");
    } else { 
    alert("Open");
}
&#13;
<span id="Close">27 September 2017</span>
<p id="AuctionDate"></p>
<p id="TodaysDate"></p>
&#13;
&#13;
&#13;

我已将今天的日期转换为数字并显示它是否有效。 我似乎无法弄清楚如何正确地比较它们,因为我无法找到如何进行EndDate解析。

感谢。

3 个答案:

答案 0 :(得分:0)

试试这个:

if (new Date('27 September 2017') < new Date('28 September 2017')) {
  console.log('still open')
}

// where
// 27 September 2017 is dateToday
// 28 September 2017 is dateCloses

var today = document.getElementById("TodaysDate").innerHTML
var dateToday = new Date(today)

答案 1 :(得分:0)

正如您目前所拥有的那样,您从.innerHTML抓取Close,并将其直接分配到EndDate。然后将该值(27 September 2017)与当前时间戳(1506645355000)进行比较。字符串会比较 lexicographically ,因此JavaScript认为27 September 2017的字符串更大&#39;而不是整数1506645355000

您需要做的是将Date.parse()移至第一行,将Date.parse()包裹在变量赋值中,以便变量EndDate以解析日期结束。

然后,如果需要,您可以通过将.innerHTML的目标AuctionDate直接设置为变量EndDate来将其输出回页面:

&#13;
&#13;
var EndDate = Date.parse(document.getElementById("Close").innerHTML);
console.log("EndDate's value is: " + EndDate) // returns a parsed date
document.getElementById("AuctionDate").innerHTML = EndDate;
var TodaysDate = Date.parse(Date());
document.getElementById("TodaysDate").innerHTML = TodaysDate;
if (EndDate < TodaysDate) {
  alert("Closed");
} else {
  alert("Open");
}
&#13;
<span id="Close">27 September 2017</span>
<p id="AuctionDate"></p>
<p id="TodaysDate"></p>
&#13;
&#13;
&#13;

希望这有帮助! :)

答案 2 :(得分:0)

您的原始var EndDate = document.getElementById("Close");只是在您输入日期的DOM 元素
因此,您之后的比较if (EndDate < TodaysDate)正在比较 DOM元素 < 日期对象

您可以通过选择元素然后获取其中的文本,从Close html元素中获取日期:
var dateString = document.getElementById('Close').innerText

由于你想处理Date对象,你可以解析它:
var EndDate = Date.parse(dateString)

此时,您可以比较两个Date对象。

另请注意,解析Date对象没有意义:
var TodaysDate = Date.parse(Date());
你可以简单地做到 var TodaysDate = new Date();

我知道他们看起来一样,但你真的想要处理Date个对象。

附注:您通常应使用.innerText而不是.innerHTML
举个例子 - 说不是这个 <span id="Close">27 Septermber 2017</span>
你有一个更复杂的结构:
<span id="Close"><span class="day">27</span> <span class="month">September</span> <span class="year">2017</span></span>

在这种情况下,close.innerHtml会给你整个烂摊子 <span id="Close"><span class="day">27</span> <span class="month">September</span> <span class="year">2017</span></span>

但close.innerText仅提供27 September 2017

您是否想要innerText或innerHTML取决于您实际使用的内容;知道差异并知道你想要的东西。