如何在Java中以hh:mm:ss.SSS格式格式化经过的时间间隔?
我正在使用Java的SimpleDateFormat将毫秒数转换为一种不错的“
hh:mm:ss:SSS”格式的秒表。问题是小时数字段中总是有一些随机数。这是我正在使用的代码:
public static String formatTime(long millis) { SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss.SSS");
String strDate = sdf.format(millis);
return strDate;
}
如果我摘下hh部分,那么它工作正常。否则,在hh部分中,即使传入的参数(毫秒数)为零,它也会显示诸如“ 07”之类的随机内容。
我对SimpleDateFormat类不太了解。谢谢你的帮助。
回答:
以下是我已经做到了,只使用标准的JDK(这将改变工作早在Java 1.1中StringBuilder
回StringBuffer
):
static public String formatMillis(long val) { StringBuilder buf=new StringBuilder(20);
String sgn="";
if(val<0) { sgn="-"; val=Math.abs(val); }
append(buf,sgn,0,(val/3600000)); val%=3600000;
append(buf,":",2,(val/ 60000)); val%= 60000;
append(buf,":",2,(val/ 1000)); val%= 1000;
append(buf,".",3,(val ));
return buf.toString();
}
/** Append a right-aligned and zero-padded numeric value to a `StringBuilder`. */
static private void append(StringBuilder tgt, String pfx, int dgt, long val) {
tgt.append(pfx);
if(dgt>1) {
int pad=(dgt-1);
for(long xa=val; xa>9 && pad>0; xa/=10) { pad--; }
for(int xa=0; xa<pad; xa++ ) { tgt.append('0'); }
}
tgt.append(val);
}
以上是 如何在Java中以hh:mm:ss.SSS格式格式化经过的时间间隔? 的全部内容, 来源链接: utcz.com/qa/405379.html