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
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 个)。所以你错过了milli
。 milli
被格式化,second
被格式化为
代码应该是:
String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli)
我有这个代码:
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
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 个)。所以你错过了milli
。 milli
被格式化,second
被格式化为
代码应该是:
String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli)