【问题标题】:How can I calulate the time since 9:30 AM in JavaScript?如何在 JavaScript 中计算从上午 9:30 开始的时间?
【发布时间】:2021-06-13 03:39:57
【问题描述】:

好的,我正在尝试在 Google Apps 脚本中计算从早上 9:30 开始的时间,我希望输出如下所示:XX hrs XX mins。问题是当我尝试计算自 9:30 以来的分钟数时,当然,它给了我所有的分钟数,而不仅仅是计算小时数后的剩余分钟数。我需要将分钟设为小数,以便将其乘以 60 并在单元格中显示输出。这是我目前使用的代码:

function CALCTIME() {
  const minutes = 1000 * 60;
  const hours = minutes * 60;
  const days = hours * 24;
  const years = days * 365;
  var now = new Date(),
  then = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    9,30,0),
  diff = now.getTime() - then.getTime();
  let hrs = diff / hours;
  let mins = Math.floor((diff / minutes) % 60);
  return Math.floor(hrs) + " hrs " + mins + " mins";
}

问题不在于小时数,我有这一切都很好。分钟是问题,因为我不知道如何只替换字符串中的索引。我查看并尝试了这些网页和 Stack Exchange 链接上显示的方法以获取答案,但我找不到任何答案:

https://www.w3schools.com/jsref/jsref_replace.asp

How do I replace a character at a particular index in JavaScript?

问题:您希望这些陈述做什么,为什么? mins.replaceAt(0, "0."); mins % 60; 第一个语句,我希望用“0”替换分钟内的第一个字符。但是随后,@jabaa 指出我无法用数字替换字符串,我完全忘记了并且没有考虑到这一点。第二个语句我忘了放mins = mins % 60;,这可能无法解决我的问题,我只是忘了放在那里。

我已经回答了你的问题,但有人已经回答了我的问题。

【问题讨论】:

  • 您希望这些语句做什么,为什么? mins.replaceAt(0, "0."); mins % 60;
  • mins 是一个数字。您想如何用字符串替换数字中的某些内容?
  • 这篇文章可能对stackoverflow.com/questions/67941993/…有帮助

标签: javascript google-apps-script google-sheets


【解决方案1】:

它不工作的原因是因为你有:

diff = now.getTime() - then.getTime();

那条线将得到从现在到上午 9:30 的时差。

var hrs = diff / hours;
var mins = diff / minutes;

上面的两行正在得到他们自己的东西。第一个是多少小时,第二个是多少分钟。所以本质上你会得到所有的分钟,而不是剩菜。有多种方法可以修复它。下面是一种正确的小时数,因此我们从分钟部分中取出每个整小时。

可能看起来像这样:

let hrs = diff / hours;
let mins = (diff / minutes) % 60;

另外:您拥有的以下代码行什么也不做,因为您没有将其提供任何存储位置。

mins % 60

要修复,您可以执行以下操作:

let testvar = mins % 60;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2023-03-09
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2020-07-20
    相关资源
    最近更新 更多