Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定在工作时间/天数内显示的图像?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何确定在工作时间/天数内显示的图像?

Javascript 如何确定在工作时间/天数内显示的图像?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,所以我之前已经问过这个问题,我得到了以下答案,这确实很有帮助!但是,假设该公司在太平洋标准时间(加利福尼亚州)上午9:00开始营业,下午5:00结束营业,周六和周日结束营业 我如何在下面调整它 另外,请记住,下面的脚本会根据工作时间触发图像显示/显示/隐藏。因此,在太平洋标准时间上午9:00时,图像显示为“我们开门”,下午5:00时,图像显示为“我们关门”。谢谢各位,我希望我已经输入了足够的数据/信息供你们回答这个问题 这里有一个参考资料 $(窗口).load(函数(){ //将小时数转换为UT

所以我之前已经问过这个问题,我得到了以下答案,这确实很有帮助!但是,假设该公司在太平洋标准时间(加利福尼亚州)上午9:00开始营业,下午5:00结束营业,周六和周日结束营业

我如何在下面调整它

另外,请记住,下面的脚本会根据工作时间触发图像显示/显示/隐藏。因此,在太平洋标准时间上午9:00时,图像显示为“我们开门”,下午5:00时,图像显示为“我们关门”。谢谢各位,我希望我已经输入了足够的数据/信息供你们回答这个问题

这里有一个参考资料

$(窗口).load(函数(){
//将小时数转换为UTC,这里的示例是使用
//中央标准时间(-0500 UTC)
//UTC的营业时间为16小时,第二天的营业时间为0小时
var d=新日期(),
打开=新日期(),
关闭=新日期();
//静态设置打开的UTC日期
开放式毛状元(16);
打开。设置分钟数(0);
open.setUTCSeconds(0);
打开。设置单位毫秒(0);
//静态设置UTC关闭日期
closed.setUTCDate(d.getUTCDate()+1);//UTC时间旋转回0,添加一天
关闭。setUTCHours(0);//UTC小时数为0
关闭。设置分钟数(0);
关闭。设置秒(0);
关闭。设置单位毫秒(0);
//调试
控制台日志(“用户日期:+d”);
日志(“在用户时区中存储打开时间:“+open”);
日志(“在用户时区中存储关闭时间:“+closed”);
console.log(d>open);//用户的时间大于打开时间
console.log(d打开和d<关闭){
setOpenStatus(true);
}否则{
setOpenStatus(false);
}
函数setOpenStatus(isOpen){
$('#opend')。切换(等参);
$('#closed')。切换(!isOpen);
}
});​

编辑/更新的脚本

$(window).load(function(){
  // Translate your hours to UTC, example here is using
  // Central Standard Time (-0500 UTC)

  // Opening hour in UTC is 16, Closing hour is 0 the next day
  var d      = new Date(), 
      open   = new Date(), 
      closed = new Date();

  // Statically set UTC date for open
  open.setUTCHours(16);
  open.setUTCMinutes(0);
  open.setUTCSeconds(0);
  open.setUTCMilliseconds(0);

  // Statically Set UTC date for closing
  closed.setUTCDate(d.getUTCDate()+1); // UTC time rotates back to 0, add a day
  closed.setUTCHours(0); // UTC hours is 0
  closed.setUTCMinutes(0);
  closed.setUTCSeconds(0);
  closed.setUTCMilliseconds(0);

  // Debugging
  console.log("user's date:" + d);
  console.log("store open time in user's timezone:" + open);
  console.log("store close time in user's timezone:" + closed);
  console.log(d > open); // user's time is greater than opening time
  console.log(d < closed); // is user's time less than closing time
                           // (you don't have to go home...)

  // Test for store open?
  if (d > open && d < closed) {
    setOpenStatus(true);
  }
  if (d.getDay() !== 0 && d.getDay() !== 6 && (d > open && d < closed))
  else {
    setOpenStatus(false);
  }

  function setOpenStatus(isOpen) {
    $('#opend').toggle(isOpen);
    $('#closed').toggle(!isOpen);
  }
});​
$(窗口).load(函数(){
//将小时数转换为UTC,这里的示例是使用
//中央标准时间(-0500 UTC)
//UTC的营业时间为16小时,第二天的营业时间为0小时
var d=新日期(),
打开=新日期(),
关闭=新日期();
//静态设置打开的UTC日期
开放式毛状元(16);
打开。设置分钟数(0);
open.setUTCSeconds(0);
打开。设置单位毫秒(0);
//静态设置UTC关闭日期
closed.setUTCDate(d.getUTCDate()+1);//UTC时间旋转回0,添加一天
关闭。setUTCHours(0);//UTC小时数为0
关闭。设置分钟数(0);
关闭。设置秒(0);
关闭。设置单位毫秒(0);
//调试
控制台日志(“用户日期:+d”);
日志(“在用户时区中存储打开时间:“+open”);
日志(“在用户时区中存储关闭时间:“+closed”);
console.log(d>open);//用户的时间大于打开时间
console.log(d打开和d<关闭){
setOpenStatus(true);
}
如果(d.getDay()!==0和d.getDay()!==6和(d>打开和d<关闭))
否则{
setOpenStatus(false);
}
函数setOpenStatus(isOpen){
$('#opend')。切换(等参);
$('#closed')。切换(!isOpen);
}
});​

将下面几行改为这一行,目前有点混乱

if (d.getDay() !== 0 && d.getDay() !== 6 && (d >= open && d < closed)) {
    setOpenStatus(true);
} else {
    setOpenStatus(false);
}
if(d.getDay()!==0和d.getDay()!==6和(d>=打开和关闭)){
setOpenStatus(true);
}否则{
setOpenStatus(false);
}

所以你理解了这个条件,它说:如果不是星期天
(d.getDay()!==0)
或星期六
(d.getDay()!==6)
并且当前时间在打开时间之后或打开时间之前
(d>=open)
,那么设置打开状态,否则
(else)
,设置关闭状态。

如果您以前问过这个问题,那么您应该在另一个问题上得到一个小的改变:是的,但有些问题说明它对我不起作用。我试过了,我可能做错了什么-请看上面的代码-我不能将我的代码片段添加到这个评论区。它到底是怎么不起作用的?错误的时间?控制台上出现了什么?@orbling:它说-->else上有语法错误{啊,是的,我明白了,看看我的答案。先生,你真是太棒了!!所以我整合了你的建议,它完美地工作了。不过,为了确保我有这个权利,它说我的工作时间是在太平洋标准时间上午9-5点到周六结束之间。到周日?我不是JS专家,这就是我为什么问这些问题的原因。谢谢奥布林!@Stuart:我没有调整时间所有时间,如果示例是CST,则仍然设置为该时间。只需调整UTC时间以适应。UTC与GMT相同,PST为UTC-8(请注意,大部分PST波段,如果不是所有的话,在夏季切换为PDT,即UTC-7)@Orbling我相信只有当您的工作时间在UTC的同一天时,这才有效。在上面的示例中,如果工作时间延长到UTC第二天凌晨1点,那么在UTC周六上午12:30访问页面的用户将无法正确计数(他们的d.getDay()将是周六)。这段代码会告诉他们,当星期五太平洋标准时间实际上是一天的最后一个小时时,商店就关门了。@jamis0n:正确,我不知道海报为什么使用UTC而不是当地时间。使用工作日来检查一天的定义是否没有得到遵守显然会被打破。解决方法是将datetime调整为l如果本地时间在一天之内,则在获取一周中的某一天之前使用本地时区,否则会很复杂,需要使用纯粹的开放时间作为使用中的一周中的某一天,并将当前日期追溯到开放的时间,或者设置一些任意的日期边界,如上午6点。
if (d.getDay() !== 0 && d.getDay() !== 6 && (d >= open && d < closed)) {
    setOpenStatus(true);
} else {
    setOpenStatus(false);
}