Javascript 将秒数转换为时间格式时得到错误答案
当我将秒数165转换为时间格式,如02:45时,我得到了错误的答案1小时加3:45时。 我不知道真正的问题在哪里 console.logConvertStringToTimeFormat165; 函数ConvertStringToTimeFormattimeString{ var timeFormat=; 如果时间字符串!=null&&timeString!=null!={ 如果Math.roundparseInttimeString/60>0 timeFormat+=Math.roundparseInttimeString/60+:; 其他的 时间格式+=00:; 如果parseInttimeString%60>0 timeFormat+=parseInttimeString%60; 其他的 timeFormat+=00; } 否则{ timeFormat=00:00; } 返回时间格式;Javascript 将秒数转换为时间格式时得到错误答案,javascript,Javascript,当我将秒数165转换为时间格式,如02:45时,我得到了错误的答案1小时加3:45时。 我不知道真正的问题在哪里 console.logConvertStringToTimeFormat165; 函数ConvertStringToTimeFormattimeString{ var timeFormat=; 如果时间字符串!=null&&timeString!=null!={ 如果Math.roundparseInttimeString/60>0 timeFormat+=Math.roundpa
} 试试这个代码。这里有很多不必要的代码: 函数minutesohoursmin{ var分钟数=分钟数%60; var小时=分钟/60分钟; 分钟=分钟<10?'0'+分钟:分钟; 小时=小时<10?'0'+小时:小时; 返回时间+':'+分钟; }
console.logminutesoours165 试试这个代码。这里有很多不必要的代码: 函数minutesohoursmin{ var分钟数=分钟数%60; var小时=分钟/60分钟; 分钟=分钟<10?'0'+分钟:分钟; 小时=小时<10?'0'+小时:小时; 返回时间+':'+分钟; }
console.logminutesoours165 当您使用Math.round函数时,您应该知道,如果小数大于或等于5,您的值将向上舍入。 让我们模拟一下:
165/60 = 2,75
它将四舍五入:3
改用Math.floor,你的问题就解决了
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null != "") {
if (Math.floor((parseInt(timeString) / 60)) > 0)
timeFormat += Math.floor((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}
当您使用Math.round函数时,您应该知道,如果小数大于或等于5,您的值将向上舍入。 让我们模拟一下:
165/60 = 2,75
它将四舍五入:3
改用Math.floor,你的问题就解决了
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null != "") {
if (Math.floor((parseInt(timeString) / 60)) > 0)
timeFormat += Math.floor((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}
当你使用Math.round时,它是2.75到3的四舍五入。你应该改用Math.floor
console.logConvertStringToTimeFormat165;
函数ConvertStringToTimeFormattimeString{
var timeFormat=;
如果时间字符串!=null&&timeString!=null!={
如果Math.floorparseInttimeString/60>0
timeFormat+=Math.floorparseInttimeString/60+:;
其他的
时间格式+=00:;
如果parseInttimeString%60>0
timeFormat+=parseInttimeString%60;
其他的
timeFormat+=00;
}
否则{
timeFormat=00:00;
}
返回时间格式;
} 当你使用Math.round时,它是2.75到3的四舍五入。你应该改用Math.floor
console.logConvertStringToTimeFormat165;
函数ConvertStringToTimeFormattimeString{
var timeFormat=;
如果时间字符串!=null&&timeString!=null!={
如果Math.floorparseInttimeString/60>0
timeFormat+=Math.floorparseInttimeString/60+:;
其他的
时间格式+=00:;
如果parseInttimeString%60>0
timeFormat+=parseInttimeString%60;
其他的
timeFormat+=00;
}
否则{
timeFormat=00:00;
}
返回时间格式;
} 您可以对部件使用数组,获取填充字符串,并使用以下内容连接结果: 函数convertmin{ return[Math.floormin/60,min%60].mapfunction a{return'00'+a.slice-2;}.join':'; }
console.log165 您可以对部件使用数组,获取填充字符串,并使用以下内容连接结果: 函数convertmin{ return[Math.floormin/60,min%60].mapfunction a{return'00'+a.slice-2;}.join':'; } console.log165 使用Math.floor而不是Math.round,因为Math.round中的165/60是3,但需要2。因此,使用Math.floor查找前面的整数值 console.logConvertStringToTimeFormat165; 函数ConvertStringToTimeFormattimeString{ var timeFormat=; 如果时间字符串!=null&&timeString!=null&&timeString!={ 如果Math.roundparseInttimeString/60>0 timeFormat+=Math.floorparseInttimeString/60+:; 其他的 时间格式+=00:; 如果parseInttimeString%60>0 timeFormat+=parseInttimeString%60; 其他的 timeFormat+=00; } 否则{ timeFormat=00:00; } 返回时间格式; } 使用Math.floor而不是Math.round,因为Math.round中的165/60是3,但需要2。因此,使用Math.floor查找前面的整数值 console.logConvertStringToTimeFormat165; 函数ConvertStringToTimeFormattimeString{ var timeFormat=; 如果时间字符串!=null&&timeString!=null&&timeString!={ 如果Math.roundparseInttimeString/ 60 > 0 timeFormat+=Math.floorparseInttimeString/60+:; 其他的 时间格式+=00:; 如果parseInttimeString%60>0 timeFormat+=parseInttimeString%60; 其他的 timeFormat+=00; } 否则{ timeFormat=00:00; } 返回时间格式; } 您需要,而不是,后者返回给定数字的值,取整为最接近的整数 对于格式问题,请尝试以下代码: console.logConvertStringToTimeFormat125; 函数格式hourMinuteHom{ 返回0+hom.slice-2; } 函数ConvertStringToTimeFormattimeString{ 如果时间串{ var timeInt=parseInttimeString; var hour=Math.floortimeInt/60; 变量分钟=时间点%60; 返回formathourMinuteHour+:+formathourMinuteMinute; }否则{ 00:00返回; } } 您需要,而不是,后者返回给定数字的值,取整为最接近的整数 对于格式问题,请尝试以下代码: console.logConvertStringToTimeFormat125; 函数格式hourMinuteHom{ 返回0+hom.slice-2; } 函数ConvertStringToTimeFormattimeString{ 如果时间串{ var timeInt=parseInttimeString; var hour=Math.floortimeInt/60; 变量分钟=时间点%60; 返回formathourMinuteHour+:+formathourMinuteMinute; }否则{ 00:00返回; }
} 我使用一点蒙皮重写了您的代码:
const ConvertStringToTimeFormat = (minutes) => ("00" + Math.floor(minutes / 60)).slice(-2) +":"+ ("00" + (minutes % 60)).slice(-2)
console.log(ConvertStringToTimeFormat(165))
我使用一点蒙皮重写了您的代码:
const ConvertStringToTimeFormat = (minutes) => ("00" + Math.floor(minutes / 60)).slice(-2) +":"+ ("00" + (minutes % 60)).slice(-2)
console.log(ConvertStringToTimeFormat(165))
谢谢你的回答这里有最好的答案。@Kinduser我不同意。它没有回答OP的问题,而是提供了一个不同的解决方案。“这不是。”詹姆斯唐纳利,我没有注意到它返回了一个不同的解决方案。但是这个方法很好。@JamesDonnelly,这更像是op的整个方法的问题。例如,它缺乏对分割和取整与地板、干燥和亲吻原则以及错误的功能命名的理解,这导致了假设它所做的完全不同。最后,但是。。所需的字符串、null检查和深入的if子句,因此是的,codereview可能会有所帮助。感谢您的回答这里的最佳答案。@Kinduser我不同意。它没有回答OP的问题,而是提供了一个不同的解决方案。“这不是。”詹姆斯唐纳利,我没有注意到它返回了一个不同的解决方案。但是这个方法很好。@JamesDonnelly,这更像是op的整个方法的问题。例如,它缺乏对分割和取整与地板、干燥和亲吻原则以及错误的功能命名的理解,这导致了假设它所做的完全不同。最后,但是。。所需的字符串,检查null和to deep if子句,所以是的,codereview可能会有所帮助answer@RAJNIKPATEL:谢谢你的邀请answer@RAJNIKPATEL:谢谢你的回答谢谢你的回答谢谢你的回答谢谢你的回答谢谢你的回答,尼娜在我做的时候回答了,所以就用她好了,尼娜在我做的时候回答了,所以就用她的@愤怒的下议院选民指定原因@愤怒的下议院选民指定原因