我有来自学校的这段代码,我似乎无法完全理解它在做什么.我知道它显示了一个单圈时间,就像来自运动的那样,以分钟,秒和毫秒换算,但我不明白2弦变量是什么以及他们做了什么.
这是代码:
public String getTimeFormat(long ms){
String s1 = ""+ms;
Date date = null;
try {
date = new SimpleDateFormat("SSS").parse(s1);
} catch (ParseException e){
e.printStackTrace();
}
String s2 = new SimpleDateFormat("mm:ss:SS").format(date);
return s2;
}
Run Code Online (Sandbox Code Playgroud)
首先,在我看来,这是非常糟糕的代码.
它将原始ms
值转换为字符串(因此35968将变为"35968"),然后将其解析为a Date
,就好像来自仅指定毫秒数的格式......然后将其解释为"自之后的毫秒数"格式化程序时区的Unix纪元".
然后Date
通过使用另一个格式将其转换为分钟/秒/毫秒格式SimpleDateFormat
.毫秒只被格式化为2个小数位,虽然:
在这里使用它作为分隔符很奇怪而不是.
.(它使它看起来像小时/分钟/秒值,而不是分钟/秒/毫秒.)
这两种格式都使用相同的时区,其中至少有某种避免出现问题.然而:
NullPointerException
将由以下行抛出a ,因为date
仍然为nullnew Date(ms)
,然后使用SimpleDateFormat
时区设置为UTC 格式化它.这里不需要任何字符串解析在不了解更多要求的情况下,我无法轻松提供更好的代码,但如果您尝试替换此代码,则应考虑:
ms
是否定的,你想做什么?ms
代表一个多小时,你想做什么?:
在秒和毫秒之间作为分隔符吗?然后,您可能希望使用String.format
格式化值.不幸的是,Joda Time和java.time
Java 8都没有很好的方法来执行自定义Duration
格式化,这正是你真正想要的.
归档时间: |
|
查看次数: |
169 次 |
最近记录: |