我正在尝试创建一个JS函数,在周一到周五上午11:00之前和周一到周五下午03:00:00之后隐藏HTML元素,并在周六和周日全天隐藏该元素。这是我到目前为止所拥有的。我想我快到了,但是时间非常棘手。这里我漏掉了什么?谢谢!!
jQuery(function() {
/* your code here */
// days of the week
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
var n = weekday[d.getDay()];
// Gather Time
var startTime = "11:00:00 AM";
var endTime = "03:00:00 PM"
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
var ap = "AM";
if (hour > 11) { ap = "PM"; }
if (hour > 12) { hour = hour - 12; }
if (hour == 0) { hour = 12; }
if (hour < 10) { hour = "0" + hour; }
if (minute < 10) { minute = "0" + minute; }
if (second < 10) { second = "0" + second; }
var currentTime = hour + ':' + minute + ':' + second + " " + ap;
if(n == "Monday" || n == "Tuesday" || n == "Wednesday" || n == "Thursday" || n == "Friday") {
if(startTime > currentTime && currentTime < endTime){
jQuery( "div.rpress_fooditem[data-term-id='2']" ).css({"display":"none"});
}}
else
jQuery( "div.rpress_fooditem[data-term-id='2']" ).css({"display":"block"});
alert("other day");
return currentTime;
});发布于 2020-07-15 02:01:18
您正在比较字符串,以决定是否,而不是实际日期...
var startTime = "11:00:00 AM";
var endTime = "03:00:00 PM"
var currentTime = hour + ':' + minute + ':' + second + " " + ap;
if(startTime > currentTime && currentTime < endTime)更新
我会使用Date,然后我会相应地更改startDate和endDate的小时和分钟,而对于currentTime,我不会更改任何内容。我希望这是有意义的。
更新2
真正的问题是我们在哪种日期进行操作?我们是使用UTC还是取决于用户的时区(取自浏览器)。如果答案是“基于时区”,那么我会建议你使用像momentjs这样的库,或者类似的东西,因为由于“夏季时间”的改变可以改变超时,你需要更新该信息的库。我不会详细说明这一点,你可以研究一下谷歌到底有什么问题。
发布于 2020-07-21 22:52:58
所以我能够计算出使用12小时格式,我使用24小时格式,并转换成字符串,它工作得很好!谢谢你的帮助
https://stackoverflow.com/questions/62900866
复制相似问题