gpt4 book ai didi

javascript - 打印日期前导零和奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 10:04:59 24 4
gpt4 key购买 nike

我准备了一个函数,用一个数字为填充数字放置一个前导零:

function pretty_time_string(num) {
return ( num < 10 ? "0" : "" ) + num;
}

然后我会在每次需要时调用它,特别是使用它来打印日期和时间:

function printHMS(d){
if (!(d instanceof Date)) d = new Date(d);
return d.getHours() + ":"
+ pretty_time_string(d.getMinutes()) + ":" +
+ pretty_time_string(d.getSeconds());
}

现在我看到直接调用第一个函数或通过第二个函数调用时出现奇怪的行为:

d = new Date(1429082763978);
document.body.innerHTML = 'Why this is with leading zero: '
+ pretty_time_string(d.getSeconds())
+ '<br>And this not? ' + printHMS(d);

结果是这样的:https://jsfiddle.net/gbh4xq9e/1/

Why this is with leading zero: 03
And this not? 9:26:3

我真的想不通为什么会出现这种奇怪的行为

更新 1:我也试过这个:https://jsfiddle.net/gbh4xq9e/3/

d.setMinutes(1);
document.body.innerHTML += '<br>UPDATE 1:<br>What about minutes? '
+ printHMS(d);

并且结果似乎在分钟中有一个前导零,但在秒中没有。

最佳答案

printHMS 函数中有一个双 + 在连接之前将字符串“03”转换为数字 3。

以下两个说法都是正确的:

"3:26:" + + "03" === "3:26:3"
"3:26:" + "03" === "3:26:03"

因此 printHMS 函数可以是

function printHMS(d){
if (!(d instanceof Date)) d = new Date(d);
return d.getHours() + ":" +
pretty_time_string(d.getMinutes()) + ":" +
pretty_time_string(d.getSeconds());
}

参见 https://jsfiddle.net/gbh4xq9e/4/完整的工作代码。

关于javascript - 打印日期前导零和奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com