java中的millis字符串格式
我有以下代码:java中的millis字符串格式,java,string,format,decimal,Java,String,Format,Decimal,我有以下代码: public String calculateHoursFromMilliSeconds(long totalMilliSeconds) { long totalSeconds = totalMilliSeconds / 1000; long milli = totalMilliSeconds % 1000; long hours = totalSeconds / 3600; long minutes = (to
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
:
或者,如果
0
,则删除hours
。添加以下条件:
if(hours == 0) return String.format("%02d:%02d.%03d", minutes, seconds, milli);
格式字符串中少了一个
%02d
。试试这个:
return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli);
// HH : MM : SS . milli
:
或者,如果
0
,则删除hours
。添加以下条件:
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);
etc如果您有兴趣将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);
etc这应该可以:
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);
}
这应该起作用:
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)
您已尝试获取包含4个参数的格式
%02d:%02d.%03d
(这里您给出了3个)。所以你错过了milli
。不是要格式化的milli
,而是格式化了second
代码应为:
String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milli)
我知道这并不是在回答你的问题,但本质上并不是在做你想做的事情?你在计算毫秒部分,也就是每秒的1/1000。因此,此代码按预期工作。。它不应该是400而是004。对于
60412
,我得到了输出00:01.000
。不,我在处理时间跨度。不是Date要么我看不见要么你们有4个参数,列表上只有3个<代码>返回字符串。格式(“%02d:%02d.%03d”,小时,分钟,秒,毫秒)代码>我知道这不是在回答你的问题,但实际上并不是在做你想做的事情?你在计算毫秒部分,它是每秒的1/1000。因此,此代码按预期工作。。它不应该是400而是004。对于60412
,我得到了输出00:01.000
。不,我在处理时间跨度。不是Date要么我看不见要么你们有4个参数,列表上只有3个<代码>返回字符串。格式(“%02d:%02d.%03d”,小时,分钟,秒,毫秒)代码>不是,因为没有足够的格式说明符,您仍然缺少秒数。见John的答案。不,不是,因为没有足够的格式说明符,您仍然错过了秒数。请参见John的答案。小时
、秒
、分钟
和毫秒
字段与当前问题更相关。但是,使用日历
来实现这一点仍然是个好主意。字段小时
、秒
、分钟
和毫秒
与当前问题更相关。但是,使用日历来实现这一点仍然是一个好主意。