如何在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中StringBuilderStringBuffer):

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

回到顶部