private static long extractFromDuration( long durationMillis, TimeUnit unit, StringBuilder target ) { int count = 0; long millisPerUnit = unit.toMillis( 1 ); while ( durationMillis >= millisPerUnit ) { count++; durationMillis -= millisPerUnit; } if ( count > 0 ) { target.append( target.length() > 0 ? " " : "" ).append( count ).append( shortName( unit ) ); } return durationMillis; }
public static String duration( long durationMillis, TimeUnit highestGranularity, TimeUnit lowestGranularity ) { StringBuilder builder = new StringBuilder(); TimeUnit[] units = TimeUnit.values(); reverse( units ); boolean use = false; for ( TimeUnit unit : units ) { if ( unit == highestGranularity ) { use = true; } if ( use ) { durationMillis = extractFromDuration( durationMillis, unit, builder ); if ( unit == lowestGranularity ) { break; } } } if ( builder.length() == 0 ) { // The value is too low to extract any meaningful numbers with the given unit brackets. // So we append a zero of the lowest unit. builder.append( '0' ).append( shortName( lowestGranularity ) ); } return builder.toString(); }
private static long extractFromDuration( long durationMillis, TimeUnit unit, StringBuilder target ) { int count = 0; long millisPerUnit = unit.toMillis( 1 ); while ( durationMillis >= millisPerUnit ) { count++; durationMillis -= millisPerUnit; } if ( count > 0 ) { target.append( target.length() > 0 ? " " : "" ).append( count ).append( shortName( unit ) ); } return durationMillis; }
public static String duration( long durationMillis, TimeUnit highestGranularity, TimeUnit lowestGranularity ) { StringBuilder builder = new StringBuilder(); TimeUnit[] units = TimeUnit.values(); reverse( units ); boolean use = false; for ( TimeUnit unit : units ) { if ( unit == highestGranularity ) { use = true; } if ( use ) { durationMillis = extractFromDuration( durationMillis, unit, builder ); if ( unit == lowestGranularity ) { break; } } } if ( builder.length() == 0 ) { // The value is too low to extract any meaningful numbers with the given unit brackets. // So we append a zero of the lowest unit. builder.append( '0' ).append( shortName( lowestGranularity ) ); } return builder.toString(); }