【问题标题】:Script for business hours javascript营业时间脚本 javascript
【发布时间】:2013-09-25 15:12:24
【问题描述】:

我需要在我的网站上显示“打开”和“关闭”功能的脚本。

脚本应在周一至周五每天上午 8:00 至晚上 19​​:30 期间显示“OPEN”

周六上午 8:00 到下午 15:00 应显示“OPEN”(否则显示 CLOSED)

星期日全天休息。

我尝试管理此脚本,但无法实现:

var Digital=new Date()
var hours=Digital.getHours()

if (hours>=08:00&&hours<=19:30) 
document.write('Open')
else if (hours>=19:31&&hours<=07:59) 
document.write('Close')

但我需要补充这些天,这只是时间。

【问题讨论】:

  • 商家在哪个时区?
  • 脚本应该使用服务器时间。时区为 (UTC+01:00) 贝尔格莱德、布拉迪斯拉发、布达佩斯、卢布尔雅那、布拉格
  • 您可以使用Digital.getDays() 来确定星期几,使用Digital.getMinutes() 来获取小时中的分钟数。
  • JavaScript 中没有19:30 有效的语法。阅读getHours() 的文档,您会发现它返回一个简单的数字——没有分钟的小时数——与时间原语无关。

标签: javascript


【解决方案1】:

hours 变量将是一个整数,您需要将它与一个数字进行比较,如下所示:

if (hours >= 8 && hours <= 19) 
    document.write('Open')
else if (hours >= 19 && hours <= 7) 
    document.write('Close')

在重写这些方法时,您还需要从 Digital 变量中获取并比较分钟数。

【讨论】:

  • 好吧,你需要在if 语句中结合所有条件。喜欢if ((day &gt; 0 &amp;&amp; day &lt; 6) &amp;&amp; (hours &gt;= 8 &amp;&amp; hours &lt;= 19))。为此,您需要将 .getDay() 方法与您的 Digitalvariable 一起使用。
【解决方案2】:

在检查时间之前,您需要使用if 语句检查当前日期。您的格式略有偏差,因为 digital.getHours() 返回的是一个整数,而不是那些格式化的字符串。

我还添加了setInterval 以每分钟更新一次状态,以防页面长时间打开。

这里是小提琴:http://jsfiddle.net/u6bwJ/1/

编辑:修复了一些错误(即拼写错误)。我还看到您需要为此进行本地化。我对针对时区进行调整的代码顶部进行了一些更改,因此它始终根据本地时间显示信息。不过有一个警告,那就是它目前是硬编码的,包括夏令时。这意味着一旦 DST 切换它就会不准确。

第 10 行:
utc1Time=new Date(localTime.getTime() + (localTime.getTimezoneOffset() + 120) * 60000);

+ 120 在将客户端时间转换为 UTC 时间后增加 2 小时,这使其成为 UTC+1,然后添加 DST 偏移量。您将需要添加一些方法来检查 DST 是否生效,类似于 utc1Time.toString().match(/daylight/i)
但我会把它留给你,因为这可能足以让你建立一个框架。

希望这会有所帮助:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2015-04-11
    • 2014-05-31
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多