我无法显示正确的日期。如果今天是该月的最后一天,并且时间是20:00 PM及以后,我想显示明天。
我已经尝试过example,this和this这两个方法,但是对我没有用。
function isLastDay(dt) {
return new Date(dt.getTime() + 86400000).getDate() === 1;
}
function changeDay() {
var d = new Date();
d.setHours(d.getHours() + (d.getTimezoneOffset() / 60) + 3);
d.setDate(31);
d.setHours(20);
var day = d.getDate();
var hrs = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
var dayString = 'today';
var mnt = new Array("january", "february", "march", "april", "may",
"june", "july", "august", "september", "october", "november", "december");
var lastday = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0).getDate();
if (((hrs == 19) && (min > 45)) || (hrs > 19)) {
day = day + 1;
dayString = 'tomorrow';
}
if (day === lastday) {
$(".start-web").html(day + " " + mnt[d.getMonth() + 1, 0]);
} else {
$(".start-web").html(day + " " + mnt[d.getMonth()]);
}
$(".start-web-d").html(dayString);
}
setInterval("changeDay()", 1000);
<div>
<p>
<strong>
Start
<span class="start-web-d"> </span>
<span class="start-web"> </span>
20:00
</strong>
</p>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
例如,我的脚本显示1月32日,而我的目的是显示2月1日。任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
此逻辑应该是您所需要的:如果明天是第一天,那么今天是一个月的最后一天,并且如果日期getHours
方法返回20或更大,则您应该满足您的条件。
const dt = new Date();
const tomorrow = new Date(dt.getTime() + 60 * 60 * 24 * 1000).getDate();
if (tomorrow === 1 && dt.getHours() >= 20) {
console.log('criteria met!');
} else {
console.log(dt, tomorrow);
}
答案 1 :(得分:0)
我看到您那里有lastday变量,但是我看不到您如何使用它。您需要检查一下当前日期是否是31日。
答案 2 :(得分:0)
只需使用===
更改>=
运算符
if (day >= lastday) {
$(".start-web").html(day + " " + mnt[d.getMonth() + 1, 0]);
} else {
$(".start-web").html(day + " " + mnt[d.getMonth()]);
}
在此行之前:
if (((hrs == 19) && (min > 45)) || (hrs > 19))
您的day
的值为31
,然后由于满足条件而将day
的值与1
相加,因此在if else范围之后,{ {1}}的值为day
然后您将32
和day
分别比较32
和lastday
,因此不满足条件,而是显示31
。
答案 3 :(得分:0)
该月的最后一天20:00 PM与该月的第一天-4小时相同,我们可以使用它来创建一个函数来检查是否超过该日期:
function lastMinus4(){
let now = new Date();
let lastM4 = new Date(now.getFullYear(), now.getMonth() + 1, 1, -4);
return (now > lastM4);
}
now变量是当前日期和时间,lastM4是当前年份,当前月+1是下个月,1是该月的第一天,而-4是过去4小时这是该月的最后一天下午20:00。另一种方法是将日设置为-1,然后将小时设置为20。
在Date构造函数中,您上面使用0作为日期表示上个月的最后一天,因此只需在构造函数的末尾加上20,就可以确定小时数。
>