【发布时间】:2013-11-24 07:08:40
【问题描述】:
我必须得到两小时之间的总分钟数。
17:00 and 16.06 hrs
如果我喜欢
17.00-16.06 =0.94
但正确答案是 54 分钟。
从逻辑上讲,我怎样才能从两个时间中获得不同的分钟数。
不使用 Calender api 或 Joda Time。
代码:
private double getTimeDifference(Date startDate,Date endDate, boolean sameDay)
{
double startTimeF=Double.valueOf(startDate.getHours()+"."+startDate.getMinutes());
double endTimeF=Double.valueOf(endDate.getHours()+"."+endDate.getMinutes());
double totalTime=0;
boolean isCalculated=false;
for(double workTime:timeMap.keySet())
{
double endTimeC=timeMap.get(workTime);
if(startTimeF>=workTime && startTimeF<=endTimeC)
{
if(endTimeF<endTimeC && sameDay)
{
isCalculated=true;
totalTime+=endTimeF-startTimeF;
}
else
{
totalTime+=endTimeC-startTimeF;
}
break;
}
}
for(double workTime:timeMap.keySet())
{
double endTimeC=timeMap.get(workTime);
if(endTimeF>=workTime && endTimeF<=endTimeC)
{
if(!isCalculated)
{
if(workTime<startTimeF && sameDay)
{
totalTime+=endTimeF-startTimeF;
}
else
{
totalTime+=endTimeF-workTime;
}
}
}
else if(!sameDay)
{
totalTime+=endTimeC-workTime;
}
}
return totalTime;
}
时间图包含json字符串的key和value:
{"time":[{"startTime":"8:00", "endTime":"12:30", "type":"Working"},{"startTime":"12:31", "endTime":"13:00", "type":"Break"},{"startTime":"13:01", "endTime":"17:00", "type":"Working"}]}
【问题讨论】:
-
请向我们展示您尝试过的代码。
-
尝试将答案转换为分钟stackoverflow.com/questions/5387371/…
-
请不要多次使用浮点变量。
16.06作为浮点数表示 16 个单位和百分之六。但是,作为时间,它意味着 16 个单位(小时)和 6 个第六十(分钟)。 如果你坚持这种表示,你应该转换它,即 6 分钟是 60 分钟的 1/10,所以你应该将 16h06 存储为16.10。然后您可以减去得到(17.0 - 16.1) = 0.9小时,即0.9 * 60 = 54分钟。但是,如果您想让自己轻松一点并避免数小时的错误搜索,只需使用 DateTime 类型 - 这就是它们的用途。 -
我不能使用 Joda 时间,因为 GWT 不支持它。
标签: java