js的函数运用问题解答

获取当前时间,将24小时制转为12小时制。如18:00展示为下午6:00

该回答引用GPT:
我们可以通过 JavaScript 的 Date 对象获取当前时间,并进行一些计算和转换来得到所需的12小时制的时间。具体实现方法如下:

function getCurrTime12h() {
  const now = new Date();
  let hours = now.getHours();
  let minutes = now.getMinutes();
  
  // 判断上午或下午
  const amPm = hours >= 12 ? '下午' : '上午';
  
  // 转换为12小时制
  hours = hours % 12;
  hours = hours ? hours : 12; // 如果是0点就改为12
  
  // 补0操作
  hours = hours < 10 ? '0' + hours : hours;
  minutes = minutes < 10 ? '0' + minutes : minutes;
  
  const time12h = `${amPm}${hours}:${minutes}`;
  return time12h;
}

上面的代码中,我们首先使用 new Date() 获取当前时间,并将小时和分钟分别赋值给变量 hours 和 minutes。然后通过判断 hours 是否大于等于12,来得到上午或下午。接着对 hours 进行取模操作,将其转换为12小时制,并在最后进行补0操作。最终将上午/下午和时间拼接在一起,并返回转换后的12小时制时间。

我们来看一个例子:

console.log(getCurrTime12h()); // 输出:下午05:38

注:这里输出的时间视当前本地时间而定。
如还有疑问,可留言帮助解决。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/186181
  • 这篇博客也不错, 你可以看下JS 随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么
  • 除此之外, 这篇博客: js 小数点后16位精度计算错误问题中的  方法用来判断给定的参数是否为整数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 由于 JavaScript 采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1 个隐藏位与 52 个有效位)。如果数值的精度超过这个限度,第54位及后面的位就会被丢弃,这种情况下,Number.isInteger可能会误判。

    Number.isInteger(3.0000000000000002) // true

    上面代码中,Number.isInteger的参数明明不是整数,但是会返回true。原因就是这个小数的精度达到了小数点后16个十进制位,转成二进制位超过了53个二进制位,导致最后的那个2被丢弃了。

    类似的情况还有,如果一个数值的绝对值小于Number.MIN_VALUE(5E-324),即小于 JavaScript 能够分辨的最小值,会被自动转为 0。这时,Number.isInteger也会误判。

    Number.isInteger(5E-324) // false
    Number.isInteger(5E-325) // true

    上面代码中,5E-325由于值太小,会被自动转为0,因此返回true

    总之,如果对数据精度的要求较高,不建议使用Number.isInteger()判断一个数值是否为整数。

  • 您还可以看一下 刘浩老师的元素周期表-three.js实战详解课程中的 课程效果展示小节, 巩固相关知识点