如何在java中获得小时/分钟差异
我必须得到两小时之间的总分钟数如何在java中获得小时/分钟差异,java,Java,我必须得到两小时之间的总分钟数 17:00 and 16.06 hrs 如果我喜欢 17.00-16.06 =0.94 但正确答案是54分钟 所以从逻辑上讲,我怎样才能从两次中得到不同的分钟数 不使用日历api或Joda时间 代码: private double getTimeDifference(日期开始日期、日期结束日期、布尔sameDay) { double startTimeF=double.valueOf(startDate.getHours()+“+”+startDate.g
17:00 and 16.06 hrs
如果我喜欢
17.00-16.06 =0.94
但正确答案是54分钟
所以从逻辑上讲,我怎样才能从两次中得到不同的分钟数
不使用日历api或Joda时间
代码:
private double getTimeDifference(日期开始日期、日期结束日期、布尔sameDay)
{
double startTimeF=double.valueOf(startDate.getHours()+“+”+startDate.getMinutes());
double-endTimeFinder=double.valueOf(endDate.getHours()+“+endDate.getMinutes());
双倍总时间=0;
布尔值isCalculated=false;
for(双工作时间:timeMap.keySet())
{
double-endTimeC=timeMap.get(工作时间);
if(startTimeF>=工作时间和startTimeF
其中,date1和date2的类型为java.util.Date
String firstTime = "17:00";
String secondTime = "16:09";
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
try {
long diff = format.parse(firstTime).getTime() - format.parse(secondTime).getTime();
System.out.println("Difference is " + (diff / (60 * 1000)) + " minutes.");
} catch (ParseException e) {
//Parsing error
}
输出:
Difference is 51 minutes.
尝试:
太长,读不下去了
java.time
麻烦的旧遗留日期时间类现在被java.time类取代
该类表示一天中没有日期和时区的时间
本课程追踪的时间跨度未附在时间表上。您的17:00和16:06示例表示负持续时间,进入过去
LocalTime start = LocalTime.parse( "17:00" );
LocalTime stop = LocalTime.parse( "16:06" ); // Going backwards into the past for a negative duration.
Duration duration = Duration.between( start , stop );
请向我们展示您尝试过的代码。与问题类似。尝试将答案转换为分钟。请不要将浮点变量用于时间。16.06
作为浮点数表示16个单位和百分之六。但是,作为时间,它表示16个单位(小时)和60分之六(分钟)。如果您坚持使用此表示法,则应将其转换,即6分钟是60分钟的1/10,因此您应将16h06存储为16.10
。然后您可以进行减法以获得(17.0-16.1)=0.9
hours,即0.9*60=54
minutes。但是,如果您想让自己轻松一点并防止数小时的错误搜索,只需使用DateTime类型-这就是它们的用途。我不能使用Joda time,因为GWT不支持它。GWT不支持TimeUnit。第80行:java.util.concurrent.TimeUni类型没有可用的源代码t、 您忘记继承所需的模块了吗?您肯定只需要将java.util.concurrent.TimeUnit添加到GWT模块的XML描述符中吗?不,它只支持此util。不支持此util,但我不知道这些。感谢您的回答。对于分钟,删除%60,它将给出秒而不是分钟,请更改为like((diff/1000)*60)不,不会。getTime()方法返回毫秒值。如果将毫秒除以1000,它将给出秒,如果将秒除以60,它将给出分钟。因为1000毫秒对应于1秒,60秒对应于1分钟。所以1分钟表示60*1000=60000毫秒。对于您的解决方案,((diff/1000)*60),你的意思是60分钟(也就是1小时)相当于1000毫秒。大约是%60,我之所以这么说,是因为第一眼看到的时候,我以为你会得到相同的小时但不同的分钟。现在我删除了它,它仍然在工作。
Difference is 51 minutes.
String from="17:00";
String to="16:06";
String fromTime[]=from.split(":");
String toTime[]=to.split(":");
int fromMin=Integer.parseInt(fromTime[0])*60+Integer.parseInt(fromTime[1]);
int toMin=Integer.parseInt(toTime[0])*60+Integer.parseInt(toTime[1]);
System.out.println("Difference "+(fromMin-toMin)+" minutes");
Duration.between( LocalTime.parse( "17:00" ) , LocalTime.parse( "16:06" ) )
LocalTime start = LocalTime.parse( "17:00" );
LocalTime stop = LocalTime.parse( "16:06" ); // Going backwards into the past for a negative duration.
Duration duration = Duration.between( start , stop );