Я пытаюсь из Отлич- продолжительности времени без имен полей по умолчанию, то есть дни, часы, минуты, секунды и т.д.Groovy: TimeDuration - Пользовательский формат вывода
Эта разница отформатирован время кладется в конце индикатора выполнения, поэтому отображается время выполнения в реальном времени процесса.
public static String calculateTime(Date timeStart)
{
Date timeStop = new Date()
TimeDuration duration = TimeCategory.minus(timeStop, timeStart)
return "${duration.days}:${duration.hours}:${duration.minutes}:${duration.seconds}".toString()
//return duration.toString()
}
public static void printProgBar(long num, long den, Date startDate){
def bar = "[";
DecimalFormat df = new DecimalFormat("#.00");
def dataType = "";
def len = den.toString().length()
if(den == 0)
{
den = 1;
}
BigDecimal percent = ((num/den)*100)
if(len <= 3){ dataType = "bytes" }
if(len <= 6 && len > 3){ dataType = "Kbs" }
if(len <= 9 && len > 6){ dataType = "Mbs" }
if(len <= 12 && len > 9){ dataType = "Gbs" }
def n = num
def d = den
if(dataType.equals("Kbs"))
{
n = num/1024
d = den/1024
}
if(dataType.equals("Mbs"))
{
n = num/1024/1024
d = den/1024/1024
}
if(dataType.equals("Gbs"))
{
n = num/1024/1024/1024
d = den/1024/1024/1024
}
for(int i = 0; i < 50; i++){
if(i < (percent/2)){
bar += "|";
}else if(i == (percent/2)){
bar += ">";
}else{
bar += " ";
}
}
def message = (percent == 100) ? "Complete!" : "processed..."
bar += "] " + df.format(percent) + "% " + df.format(n) + " of " + df.format(d) + " $dataType $message " + HSTools.calculateTime(startDate);
print "\r" + bar;
}
Выход:
Загрузка данных для: Patient_Contacts_Data.txt Создание сканера и настройка ограничителя: \ |^@ *^@ г^@ *^@ \ | [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||] 100.00% 1.60 от 1.60 Мбс Завершить! 0: 0: 0: 5656 обработанных записей: 5857 Прошедшее время: 0: 0: 0: 56
По большей части мой код, как представляется, будет работать, однако время от времени появляются секунды удвоить на себя.
Любые мысли о том, что может быть причиной этого? Или предложения о том, как лучше форматировать этот TimeDuration?
Что такое HSTools? Вывод отформатирован в 'HSTools.calculateTime (startDate)', что, вероятно, должно начаться. – Steinar
HSTools.calculateTime() - первая функция, указанная в коде выше. Вы можете видеть, что набор форматирования - $ {duration.days}: $ {duration.hours}: $ {duration.minutes}: $ {duration.seconds} , который должен выдавать результат 0: 0: 0: 0 (дни, часы, минуты, секунды) – Asmodeius