【问题标题】:Get remaining time with an array for opening hours使用数组获取开放时间的剩余时间
【发布时间】:2020-03-26 14:22:24
【问题描述】:

我正在尝试创建倒计时以获取我的商店关闭之前的剩余时间

// My array for the opening hours :
var openTime = [
  { open : 9, close : 17},
  { open: 9, close : 18 },
  { open: 9, close : 18 },
  { open: 9, close : 18 },
  { open: 9, close : 18 }, 
  { open: 9, close : 18 },
  { open: 10, close : 16.5 }
]

var current = new Date();
var day = current.getDay();
var currentTime = current.getHours() + (current.getMinutes() / 60);
var remainTime = 0;

if (openTime[day].open >= 0 && openTime[day].open < currentTime && openTime[day].close >
  currentTime) {
  remainTime = (openTime[day].close - currentTime).toFixed(2)
}

console.log("the shop will close in %s hours", remainTime);

但我对这一行有疑问:

var currentTime = current.getHours() + (current.getMinutes()/60);

因为当我执行代码时,例如,实际上是 17h22,代码在我的调试器上给我的当前时间等于 17.36?

线路有问题,因为它给了我错误的剩余时间......

【问题讨论】:

  • 那么问题是你没有检查22 / 60(current.getMinutes() / 60)的结果是什么?
  • 不是真的,真正的问题是我的代码没有给出正确的剩余时间
  • 您的代码有效。 22 / 60 ~ 0.36 与您的示例完全相同。

标签: javascript time countdown hour


【解决方案1】:

一小时的 0.36(十进制数)等于 21.6 (≈22) 分钟。

将十进制转换为分钟很简单:60*decimal。或者 (60*decimal).toFixed(0)(60*decimal).round() 如果你想要一个整数。

另外,请记住 JS 使用设备的时间。今天大多数设备都会同步它们的时间,但如果你不想依赖它,你应该从你的服务器中获取时间(即在预处理时将它存储在一个 JS 变量中,比如var time=&lt;?=time()?&gt;;)。

【讨论】:

    【解决方案2】:

    如果要将当前时间作为字符串,则必须:

    var currentTime = current.getHours() + ":" + (current.getMinutes() / 60);
    

    但我猜这不是你想要的。你得到了 17.36 的课程,因为 17:22 转换为十进制基数 10 而不是 60 分钟给出了这个值(22 分钟 /60 =0.363636 舍入两位数 0.36)。如果您想让计时器工作,您可以将小数部分转换回 *60 以便于找到它。使用:

     var decimalPart = remainTime % 1;
     var remainTimeHours =  remainTime - decimalPart;
    var remainTimeMin  = decimalPart * 60;
    

    当然你可以简化它 - 只是为了展示逻辑
    - 在您关闭的时间,您已经使用 16.5 表示 16:30 或者应该是 16:50 -> 然后是 16.83
    或首选单独的小时和分钟逻辑,如果需要,不使用偶数秒转换为十进制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多