如何在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 );