java 中的毫秒字符串格式

millis string format in java

我有这个代码:

  public String calculateHoursFromMilliSeconds(long totalMilliSeconds) {
        long totalSeconds = totalMilliSeconds / 1000;
        long milli = totalMilliSeconds % 1000;
        long hours = totalSeconds / 3600;
        long minutes = (totalSeconds % 3600) / 60;
        long seconds = totalSeconds % 60;
        return String.format("%02d:%02d.%03d", hours, minutes, seconds, milli);
    }

但是

输入 412 毫秒

我得到输出 00:00.004 而不是 00:00.412

输入 60412 毫秒

我得到输出 01:00.004 而不是 01:00.412

你的格式字符串少了一个%02d。试试这个:

return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli);
//                     HH : MM : SS . milli

Sample output:

412:   00:00:00.412
60412: 00:01:00.412

或者,删除 hours(如果它是 0)。添加以下条件:

if(hours == 0) return String.format("%02d:%02d.%03d", minutes, seconds, milli);

如果您有兴趣将 Epoch 转换为 java 可读格式,请执行以下操作:

String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));

或使用日历一一获取:

Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(millisec*1000);
    int mYear = calendar.get(Calendar.YEAR);
    int mMonth = calendar.get(Calendar.MONTH);
    int mDay = calendar.get(Calendar.DAY_OF_MONTH);

等等

这应该有效:

public String calculateHoursFromMilliSeconds(long totalMilliSeconds) {
    long totalSeconds = totalMilliSeconds / 1000;
    long milli = totalMilliSeconds % 1000;
    long hours = totalSeconds / 3600;
    long minutes = (totalSeconds % 3600) / 60;
    long seconds = totalSeconds % 60;

    DecimalFormat formatter = new DecimalFormat("###");
    formatter.setRoundingMode(RoundingMode.HALF_UP);
    String millisStr = formatter.format(milli);

    return String.format("%02d:%02d."+millisStr, hours, minutes, seconds);
}

您尝试使用 4 个参数获取格式 %02d:%02d.%03d(这里您给出了 3 个)。所以你错过了millimilli 被格式化,second 被格式化为

代码应该是:

String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli)