如何格式化以hh:mm:ss.SSS格式在Java中的已用时间间隔?

我在做一个停止监视,我在使用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             ));
    append(buf,":",2,((val%3600000)/60000      ));
    append(buf,":",2,((val         %60000)/1000));
    append(buf,".",3,( val                %1000));
    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);
    }
http://stackoverflow.com/questions/6710094/how-to-format-an-elapsed-time-interval-in-hhmmss-sss-format-in-java

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何格式化以hh:mm:ss.SSS格式在Java中的已用时间间隔?