【发布时间】:2014-01-02 21:03:00
【问题描述】:
我正在使用 Joda 时间段来汇总多个时间值。从 00:00:00 开始,我添加每个时间量以获得所有活动的总时间量。我想通过将所有时间值相加得到的总时间除以总距离得到每个测量单位的平均时间。
代码:
builder = new PeriodFormatterBuilder();
builder.printZeroAlways()
.minimumPrintedDigits(2)
.appendHours()
.appendSeparator(":")
.appendMinutes()
.appendSeparator(":")
.appendSeconds();
PeriodFormatter formatter = builder.toFormatter();
PeriodParser parser = builder.toParser();
String zero = "00:00:00";
MutablePeriod start = new MutablePeriod();
MutablePeriod adding = new MutablePeriod();
parser.parseInto(start, zero, 0, Locale.getDefault());
System.out.println("Orig Time: "+formatter.print(start));
float total = 0;
for (Activity temp : last7acts) {
System.out.println(temp.getCatName()+" - "+temp.getTime()+" - "+temp.getDistance()+" "+temp.getUnits());
total = total + temp.getDistance();
String add = temp.getTime();
parser.parseInto(adding, add, 0, Locale.getDefault());
start.add(adding);
System.out.println("Adding Time: "+formatter.print(start));
if (start.getSeconds() > 60) {
int origSeconds = start.getSeconds();
int newMinutes = origSeconds / 60;
int newSeconds = origSeconds % 60;
start.addMinutes(newMinutes);
start.setSeconds(newSeconds);
}
if (start.getMinutes() > 60) {
int origMinutes = start.getMinutes();
int newHours = origMinutes / 60;
int newMinutes = origMinutes % 60;
start.addHours(newHours);
start.setMinutes(newMinutes);
}
System.out.println("Altered Time: "+formatter.print(start));
}
System.out.println("Final Distance: "+total);
System.out.println("Final Time: "+formatter.print(start));
输出:
Orig Time: 00:00:00
Run - 00:16:08 - 2.0 miles
Adding Time: 00:16:08
Altered Time: 00:16:08
Run - 00:18:09 - 2.21 miles
Adding Time: 00:34:17
Altered Time: 00:34:17
Run - 00:23:35 - 2.69 miles
Adding Time: 00:57:52
Altered Time: 00:57:52
Run - 00:34:45 - 4.29 miles
Adding Time: 00:91:97
Altered Time: 01:32:37
Run - 00:36:15 - 4.17 miles
Adding Time: 01:68:52
Altered Time: 02:08:52
Run - 00:18:03 - 2.14 miles
Adding Time: 02:26:55
Altered Time: 02:26:55
Run - 00:17:27 - 2.19 miles
Adding Time: 02:43:82
Altered Time: 02:44:22
Run - 00:43:43 - 5.1 miles
Adding Time: 02:87:65
Altered Time: 03:28:05
Distance: 24.79
Final Time: 03:28:05
将 03:28:05 的最终时间除以 24.79 以获得每单位的平均时间的最佳方法是什么?
【问题讨论】:
-
你的变量 start 是什么意思?哪种类型?
-
如何将时间转换为秒除以您的英里数,得到每英里的秒数?
-
感谢 gfgaxiola,这是一种选择,但很好奇是否有功能可以在不转换的情况下按时执行除法。显然不是。
-
Meno - 起始变量是 MutablePeriod 类型。我用“00:00:00”时间初始化它,并用它把时间加在一起。
标签: java time distance jodatime average