====== Convert a time duration into a text ======
Output in Spanish. I think it would be translatable easily.
durationToText -> 21 minutos y 57,432 segundos
durationToText -> 3 días, 14 horas, 19 minutos y 0,516 segundos
private String durationToText( long start, long end )
{
NumberFormat format = new DecimalFormat( "###" );
NumberFormat formatSeconds = new DecimalFormat( "##.###" );
long milliseconds = end - start;
long months;
long modMonths;
long days;
long modDays;
long hours;
long modHours;
long minutes;
long modMinutes;
float seconds;
months = milliseconds / (30L*24L*3600L*1000L);
modMonths = milliseconds % (30L*24L*3600L*1000L);
days = modMonths / (24L*3600L*1000L);
modDays = modMonths % (24L*3600L*1000L);
hours = modDays / (3600L*1000L);
modHours = modDays % (3600L*1000L);
minutes = modHours / (60L*1000L);
modMinutes = modHours % (60L*1000L);
seconds = (float) modMinutes / (float) 1000;
String out;
out = "";
if( months != 0 )
out += format.format(months) + " meses";
if( days != 0 )
{
// add a comma or a conjunction (y)
if( !out.isEmpty() )
{
// if the rest of elements are zero, add a "y "
if( hours == 0 && minutes == 0 && seconds == 0 )
out += " y ";
else
out += ", ";
}
out += format.format(days) + " días";
} // days != 0
if( hours != 0 )
{
// add a comma or a conjunction
if( !out.isEmpty() )
{
// if the rest of elements are zero, add a "y "
if( minutes == 0 && seconds == 0 )
out += " y ";
else
out += ", ";
}
out += format.format(hours) + " horas";
} // hours != 0
if( minutes != 0 )
{
// add a comma or a conjunction
if( !out.isEmpty() )
{
// if the rest of elements are zero, add a "y"
if( seconds == 0 )
out += " y ";
else
out += ", ";
}
out += format.format(minutes) + " minutos";
} // minutes != 0
if( seconds != 0 )
{
// just add a "y" - copulative conjunction
if( !out.isEmpty() )
{
out += " y ";
}
out += formatSeconds.format(seconds) + " segundos";
}
return out;
}