我的代码包含军事格式的时间。
<div class="em" data-time="17:30">
我将该时间与当前时间进行比较,以确定是否已经过了设定的时间。
var curDate = new Date(),
curTime = curDate.getTime(),
givenTm = $(this).find('.em').attr('data-time'),
givenMs = Date.parse(curDate.toDateString() + ' ' + givenTm);
if (curTime > givenMs) {
// time has passed
}
我需要修改我的代码以检查数据属性中的时间,而不是在给定时间后一小时。此外,我的给定时间只能在同一天,而不是晚于23:30,这意味着我只关心给定的时间是否晚于23:00。
如何将所有这些放在一起?
答案 0 :(得分:0)
要按小时调整,只需在毫秒(60 * 60 * 1000)中添加一小时进行比较。要忽略2300之后的任何给定时间,您需要在条件中添加另一个子句。所以这样的事情可能会这样做:
if (new Date(givenMs).getHours() < 23
&& curTime > givenMs + 3600000) {
// time has passed
}
希望这有帮助。
答案 1 :(得分:0)
尝试使用.toJSON
,String.prototype.replace()
,String.prototype.slice()
$("div").click(function() {
var curDate = new Date(),
curTime = curDate.toJSON(),
givenTm = $(this).find(".em").attr("data-time")
.replace(/(\d+)(?=:)/, function(match) {
return Number(match) + 1
}),
curr = curTime.slice(11, -8).replace(":", ""),
given = givenTm.replace(":", "");
if (curr < 2330 && given < 2330) {
// time has passed
console.log("currTime:", curr, "givenTime:", given,
"time has not passed")
} else {
console.log("time has passed")
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div>click
<div class="em" data-time="17:30">
</div>
&#13;