将分钟转换为小时标度
Convert minutes to hours scala
我有一个号码在minutes
,例如:
Int totalminutes= 342
我想这样显示:
5h:42m:..s
我做了一个 scala 函数将分钟转换为小时 return HH:MM:SS
scala> def convertSeconds(input:Int):String ={
| val totalMinutes = input/60
| val seconds = input%60
| val minutes = totalMinutes%60
| val hours = totalMinutes%60
|
| return "%sh:%sm:%ss".format(hours,minutes,seconds)
| }
convertSeconds: (input: Int)String
我做了测试:
scala> convertSeconds(120) // 120 minutes
res22: String = 2h:2m:0s // why it add 2 minutes
scala> convertSeconds(60) // 60 minutes
res23: String = 1h:1m:0s // adding 1 minute
scala> convertSeconds(36) // 36 minutes
res24: String = 0h:0m:36s // I want to return 0h:30m:06s
解决方法是:
scala> def convertSeconds(input:Int):String ={
//val totalMinutes = input/60
//val seconds = input/60%60
val minutes = input%60
val hours = input/60
return "%sh:%sm".format(hours,minutes)
}
convertSeconds: (input: Int)String
scala> convertSeconds(36)
res57: String = 0h:36m
scala> convertSeconds(120)
res58: String = 2h:0m
scala> convertSeconds(122)
res59: String = 2h:2m
scala> convertSeconds(2166)
res60: String = 36h:6m
你的函数应该是这样的,你传递的是秒而不是分钟:
def convertSeconds(input:Int):String ={
val hours = input/3600
val minutes = (input-hours*3600)/60
val seconds = input%3600-minutes*60
"%sh:%sm:%ss".format(hours,minutes,seconds)
}
如果你想过minutes
,函数应该是这样的,我给它取名为convertMinutes
,你的秒数会zero
,你可以在你规定的通过此代码显示:
def convertMinutes(input:Int):String ={
val hours = input/60
val minutes = input-hours*60
"%sh:%sm:%ss".format(hours,minutes,"..")
}
在 Scala REPL 中:
scala> convertSeconds(7523)
res4: String = 2h:5m:23s
scala> convertSeconds(9523)
res5: String = 2h:38m:43s
scala> convertSeconds(3724)
res6: String = 1h:2m:4s
scala> convertMinutes(342)
res10: String = 5h:42m:..s
在Java,相信你自己翻译:
int totalminutes = 342;
Duration dur = Duration.ofMinutes(totalminutes);
String display = String.format("%dh:%02dm:%02ds",
dur.toHours(), dur.toMinutesPart(), dur.toSecondsPart());
System.out.println(display);
这会打印:
5h:42m:00s
如果有秒数,请改用 Duration.ofSeconds
。
不要自己计算。它很容易出错,并且需要您 reader 花一些时间来说服 herself/himself 您的计算是正确的。相反,让库方法进行计算,即使它们看起来微不足道。
你的代码出了什么问题?
已经说过了:你用过
val hours = totalMinutes%60
这应该是一个部门:
val hours = totalMinutes / 60
犯这样的错误比您想象的要容易。相比之下,当您打算 toHours
时,您不会轻易调用 toMinutesPart
,如果您仍然这样做,则更容易发现错误。
我不确定你是否需要一个单独的函数来实现这个。
Scala 已经给出了 library 来做到这一点
scala> val secs = 62
secs: Int = 62
scala> import scala.concurrent.duration._
scala> val inTime = Duration(secs,SECONDS)
inTime: scala.concurrent.duration.FiniteDuration = 62 seconds
scala> "%02d:%02d:%02d".format(inTime.toHours,inTime.toMinutes%60,inTime.toSeconds%60)
res8: String = 00:01:02
EDIT-1:如果您传递一个数字 >= 86400(一天中的总秒数),这不会处理
我有一个号码在minutes
,例如:
Int totalminutes= 342
我想这样显示:
5h:42m:..s
我做了一个 scala 函数将分钟转换为小时 return HH:MM:SS
scala> def convertSeconds(input:Int):String ={
| val totalMinutes = input/60
| val seconds = input%60
| val minutes = totalMinutes%60
| val hours = totalMinutes%60
|
| return "%sh:%sm:%ss".format(hours,minutes,seconds)
| }
convertSeconds: (input: Int)String
我做了测试:
scala> convertSeconds(120) // 120 minutes
res22: String = 2h:2m:0s // why it add 2 minutes
scala> convertSeconds(60) // 60 minutes
res23: String = 1h:1m:0s // adding 1 minute
scala> convertSeconds(36) // 36 minutes
res24: String = 0h:0m:36s // I want to return 0h:30m:06s
解决方法是:
scala> def convertSeconds(input:Int):String ={
//val totalMinutes = input/60
//val seconds = input/60%60
val minutes = input%60
val hours = input/60
return "%sh:%sm".format(hours,minutes)
}
convertSeconds: (input: Int)String
scala> convertSeconds(36)
res57: String = 0h:36m
scala> convertSeconds(120)
res58: String = 2h:0m
scala> convertSeconds(122)
res59: String = 2h:2m
scala> convertSeconds(2166)
res60: String = 36h:6m
你的函数应该是这样的,你传递的是秒而不是分钟:
def convertSeconds(input:Int):String ={
val hours = input/3600
val minutes = (input-hours*3600)/60
val seconds = input%3600-minutes*60
"%sh:%sm:%ss".format(hours,minutes,seconds)
}
如果你想过minutes
,函数应该是这样的,我给它取名为convertMinutes
,你的秒数会zero
,你可以在你规定的通过此代码显示:
def convertMinutes(input:Int):String ={
val hours = input/60
val minutes = input-hours*60
"%sh:%sm:%ss".format(hours,minutes,"..")
}
在 Scala REPL 中:
scala> convertSeconds(7523)
res4: String = 2h:5m:23s
scala> convertSeconds(9523)
res5: String = 2h:38m:43s
scala> convertSeconds(3724)
res6: String = 1h:2m:4s
scala> convertMinutes(342)
res10: String = 5h:42m:..s
在Java,相信你自己翻译:
int totalminutes = 342;
Duration dur = Duration.ofMinutes(totalminutes);
String display = String.format("%dh:%02dm:%02ds",
dur.toHours(), dur.toMinutesPart(), dur.toSecondsPart());
System.out.println(display);
这会打印:
5h:42m:00s
如果有秒数,请改用 Duration.ofSeconds
。
不要自己计算。它很容易出错,并且需要您 reader 花一些时间来说服 herself/himself 您的计算是正确的。相反,让库方法进行计算,即使它们看起来微不足道。
你的代码出了什么问题?
已经说过了:你用过
val hours = totalMinutes%60
这应该是一个部门:
val hours = totalMinutes / 60
犯这样的错误比您想象的要容易。相比之下,当您打算 toHours
时,您不会轻易调用 toMinutesPart
,如果您仍然这样做,则更容易发现错误。
我不确定你是否需要一个单独的函数来实现这个。 Scala 已经给出了 library 来做到这一点
scala> val secs = 62
secs: Int = 62
scala> import scala.concurrent.duration._
scala> val inTime = Duration(secs,SECONDS)
inTime: scala.concurrent.duration.FiniteDuration = 62 seconds
scala> "%02d:%02d:%02d".format(inTime.toHours,inTime.toMinutes%60,inTime.toSeconds%60)
res8: String = 00:01:02
EDIT-1:如果您传递一个数字 >= 86400(一天中的总秒数),这不会处理