获取毫秒格式

Posted

技术标签:

【中文标题】获取毫秒格式【英文标题】:Getting millisecond format 【发布时间】:2011-08-13 06:29:15 【问题描述】:

我试图让这个字符串为我的 MediaPlayer 返回 Minute:Second:Millisecond。我找到了这段代码,但不知道如何使毫秒工作并将其放在小数点后 2 位。我相信它对合适的人来说很简单!

private String getTimeString(long millis) 
        StringBuffer buf = new StringBuffer();

        int hours = (int) (millis / (1000*60*60));
        int minutes = (int) (( millis % (1000*60*60) ) / (1000*60));
        int seconds = (int) (( ( millis % (1000*60*60) ) % (1000*60) ) / 1000);


        buf
            .append(String.format("%02d", hours))
            .append(":")
            .append(String.format("%02d", minutes))
            .append(":")
            .append(String.format("%02d", seconds));


        return buf.toString();
    

谢谢大家

【问题讨论】:

或许你应该看看Formatter? 【参考方案1】:

一秒有 1000 毫秒,即毫秒需要 3 位小数:

/** return time in format 1:23.456 */
private String getTimeString(long millis) 
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int milliseconds = (int) (millis % 1000);
    String.format("%d:%02d.%03d", minutes, seconds, milliseconds);

如果你绝对想要 2 位毫秒,你实际上得到的是 1/100 秒而不是毫秒:

/** return time in format 1:23.45 */
private String getTimeString(long millis) 
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int seconds100 = (int) ((millis / 10) % 100);
    String.format("%d:%02d.%02d", minutes, seconds, seconds100);

但是,媒体播放器的常见显示格式是在十分之一秒内使用一个数字:

/** return time in format 1:23.4 */
private String getTimeString(long millis) 
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int seconds10 = (int) ((millis / 100) % 10);
    String.format("%d:%02d.%d", minutes, seconds, seconds10);

【讨论】:

【参考方案2】:

如果您想将毫秒放在小数点后两位,请记住您只能显示 10 毫秒的增量; 1ms = 0.001s,三位小数。但无论如何,您要查找的代码是:

int rem_milliseconds = (int)(millis % 1000); // Remaining ms after last second
...
.append(String.format("%02d", rem_milliseconds));

我将其保留在小数点后 2 位。

【讨论】:

【参考方案3】:

试试这个:

private String getTimeString(long millis) 
    long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(millis) -
                   TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis));
    millis -= TimeUnit.MINUTES.toMillis(minutes) + TimeUnit.SECONDS.toMillis(seconds);

    return String.format("%d:%d:%d", minutes, seconds, millis);

【讨论】:

以上是关于获取毫秒格式的主要内容,如果未能解决你的问题,请参考以下文章

java怎么获取当前系统时间 毫秒数

PHP——获取当前时间精确到毫秒(yyyyMMddHHmmssSSS)

shell获取时间精确到毫秒级别是哪个命令

如何以毫秒为单位获取带有 unix 时间戳的人类可读日期? [复制]

js时间戳怎么转成日期格式

如何以毫秒为单位获取firebase服务器的当前时间戳?