gpt4 book ai didi

datetime - Groovy:TimeDuration - 自定义输出格式

转载 作者:行者123 更新时间:2023-12-02 14:43:48 25 4
gpt4 key购买 nike

我正在尝试在没有默认字段名称的情况下排除常规的持续时间,即天、小时、分钟、秒等。

这个格式化的时间差被放在进度条的末尾,以便显示进程的实时运行时间。

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
创建扫描器并设置分隔符:\|^@*^@r^@*^@\|
[||||||||||||||||||||||||||||||||||||||||||||||| |] 100.00% 1.60 of 1.60 Mbs 完成! 0:0:0:5656
处理的记录:5857
耗时:0:0:0:56

在大多数情况下,我的代码似乎可以正常工作,但有时秒数似乎会加倍。

关于可能导致这种情况的任何想法?或有关如何更好地格式化此 TimeDuration 的建议?

最佳答案

您的代码的问题是没有删除以前的输出。由于您的输出未格式化为固定大小,因此稍后出现的较短输出不会覆盖先前输出中的最后一个字符。

例如,当持续时间从 59 秒变为 1 分钟时,它会发生如下变化:

[|||||||||||||||||           ]   59.10%    .58 of .98 Kbs processed... 0:0:0:59

像这样:
[|||||||||||||||||           ]   59.20%    .58 of .98 Kbs processed... 0:0:1:0

但由于第一行比第二行长,实际输出将如下所示:
[|||||||||||||||||           ]   59.20%    .58 of .98 Kbs processed... 0:0:1:09

您可以通过附加一些空格或通过制作固定大小的时间输出来解决它(例如,始终使用 2 位数字表示秒、分钟、小时等)。

注意:从 IntelliJ IDEA 中运行时,该行的其余部分实际上已被删除,但从 shell 运行时却没有。

关于datetime - Groovy:TimeDuration - 自定义输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21941585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com