获取当前时间,将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
注:这里输出的时间视当前本地时间而定。
如还有疑问,可留言帮助解决。
由于 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()
判断一个数值是否为整数。