首页 > 解决方案 > JS中的时间函数

问题描述

我正在尝试创建一个 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;
});

标签: javascriptcsstime

解决方案


您在决定是否比较字符串,而不是实际日期...

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因为endDatecurrentTime不会改变任何东西。我希望这是有道理的。

更新 2

真正的问题是我们对什么样的日期进行操作?我们是在UTC还是它取决于用户的时区(取自浏览器)。如果答案是“基于时区”,那么我会建议您使用诸如 momentjs 之类的库或类似的库,因为由于“夏令时”的更改可能会改变加班时间,您需要更新该信息的库。我不会详细说明它,您可以在 google 中重新搜索问题的真正含义。


推荐阅读