2016-05-03 3 views
0

Я пытался ограничить число миллисекунд, отображаемых в Android UI, и я пришел с этим:Запрос лучший способ ограничить милли второй цифры

Long milli = TimeUnit.NANOSECONDS.toSeconds(nanos); 
String partB = milli.toString().substring(0,2); 
String partA = String.format("%d:%d:%d.",  
    TimeUnit.NANOSECONDS.toHours(nanos), 
    TimeUnit.NANOSECONDS.toMinutes(nanos),  
    TimeUnit.NANOSECONDS.toSeconds(nanos)); 
return partA + partB; 

Я попытался установить string.Format к " % d:% d:% d.% 02d ", но я все еще получил полное 5-значное значение, возвращаемое за миллисекунды.

ответ

0

Это код, я использую в производстве

public static String returnFormattedDuration(long nanos){ 
    Long days= TimeUnit.NANOSECONDS.toDays(nanos); 
    nanos -= TimeUnit.DAYS.toNanos(days); 
    Long hours=TimeUnit.NANOSECONDS.toHours(nanos); 
    nanos -= TimeUnit.HOURS.toNanos(hours); 
    Long minutes=TimeUnit.NANOSECONDS.toMinutes(nanos); 
    nanos -= TimeUnit.MINUTES.toNanos(minutes); 
    Long seconds= TimeUnit.NANOSECONDS.toSeconds(nanos); 
    nanos -= TimeUnit.SECONDS.toNanos(seconds); 
    Long millisec = TimeUnit.NANOSECONDS.toMillis(nanos); 
    return days.toString()+":"+hours.toString()+":"+minutes.toString()+":"+seconds.toString()+"."+millisec.toString(); 
} 

и он работает хорошо

0

Попробуйте этот.

milli.substring(0, Math.min(milli.length(), 2)); 
Смежные вопросы