我想写一个函数,它以hh:mm(26:40)的格式作为参数字符串。
我需要函数作为输出返回字符串" 1 d,2 h,40 min"
我试图在没有运气的情况下搜索内置函数或最佳实践。
我已经提出以下代码并且它正在运作,但我觉得它有点矫枉过正,我想知道是否有最佳实践。
var t = "27:20"
var res = foo(t)
document.writeln(res);
function foo(st) {
var splittedSt = st.split(":")
var days = parseInt(splittedSt[0] / 24, 10) + " d";
var hours = Number(splittedSt[0]) - Number(days.split(" ")[0]) * 24 + " h";
var minutes = splittedSt[1] + " min";
return days + " " + hours + " " + minutes
}

答案 0 :(得分:0)
你想要这个
吗?
<?php
class abc
{
public static $data="i am static membervaribale".'</br>';
public $data1="i am not a static membervaribale".'</br>';
public function a()
{
echo "I am a non static method".'</br>';
}
public function getsize()
{
return self::$data;
}
}
echo abc::$data;
//echo abc::$data1;//showing error;
echo abc::a();
echo abc::getsize();
$obj=new abc;
echo $obj->data1;
?>
&#13;
答案 1 :(得分:0)
你的方法是正确的。通常,您尝试解决的任务可分为两个步骤。
以下代码将输入拆分为年,日,小时和分钟:
document.writeln("27:20 -> " + foo("27:20:0"));
document.writeln("8760:0 -> " + foo("8760:0"));
document.writeln("-8760:0 -> " + foo("-8760:0"));
function foo(st) {
var splittedSt = st.split(":")
// STEP 1
var total = parseInt(splittedSt[0]) * 60 + parseInt(splittedSt[1]);
// STEP 2
var minutes = parseInt(total % 60);
var hours = parseInt(total / 60) % 24;
var days = parseInt(total / 60 / 24) % 365;
var years = parseInt(total / 60 / 24 / 365) ;
return years + " years " + days + " days " + hours + " hours " + minutes + " minutes"
}
&#13;
虽然这对于相对简单的问题看起来像是一堆代码,但实际上没有其他办法可以做到。但是,大多数编程语言都有内置函数来处理许多简单的问题。不幸的是,我在Javascript方面的经验非常有限。因此,我无法实现这一目标,但@mplungjan可能会对此有所了解?
答案 2 :(得分:0)
foo=s=>(((h,m)=>(Math.floor(h/24)+"d "+(h%24)+"h "+m+"m") )(...s.split(":")) );
那我认为很短暂
答案 3 :(得分:0)
我能够使用momentjs lib来完成它,就像mplungjan在他的评论中所建议的那样(已经在项目中使用过了一段时间)。
一条带有相关格式的简单行。
CustomException extends IllegalArgumentException
会给出结果:
console.log(moment.duration("27:20").format("d [d], h [h], m [min]"));