Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中计算两个时间差的最佳方法?_Java - Fatal编程技术网

在java中计算两个时间差的最佳方法?

在java中计算两个时间差的最佳方法?,java,Java,我在一个数组中有两次,我需要计算这两次之间的差。我已将小时转换为分钟,然后添加剩余的分钟。这给了我总的分钟数,一旦我为这两个都做了,我只需减去一个总分钟数。然后将它们转换回小时和分钟 double no1 = Double.parseDouble(array[i][4]); int time1_calc = (int) (no1 * 100); //Remove decimal point int time1hours = (time1_calc) / 100; int time1mins =

我在一个数组中有两次,我需要计算这两次之间的差。我已将小时转换为分钟,然后添加剩余的分钟。这给了我总的分钟数,一旦我为这两个都做了,我只需减去一个总分钟数。然后将它们转换回小时和分钟

double no1 = Double.parseDouble(array[i][4]);
int time1_calc = (int) (no1 * 100); //Remove decimal point
int time1hours = (time1_calc) / 100;
int time1mins = (time1_calc) % 100;
int time1HM = time1hours*60;
int time1_total = time1HM + time1mins;
上面的代码是第二次使用,然后我使用:

int total = time2_total - time1_total;
对于这一点,所有计算“看起来”都是可行的,但例如,10.18和09.35之间的差异是1小时23分钟或总共83分钟。我的节目似乎显示43分钟

我尝试过其他方法,但仍然无法让它工作,有什么想法吗?

看看图书馆

如果你想自己做,那么你的代码在我看来是正确的

int time1mins = (time1_calc) % 100;
分钟不是小时的剩余部分除以100,而是除以60。这就是这段代码要做的吗


另外,您最好只使用对象。

使用(可能)对象来解析字符串,不要尝试使用
parseDouble()
(这是用于解析单个数字,而时间不是)。

使用日期对象。然后使用它的getTime方法。它将以毫秒(长)为单位显示时间。然后减去时间。然后把它们转换成分钟和小时。

谢谢,但我不能用任何图书馆。@Elliott:为什么不呢,出于兴趣?如果可能的话,Joda time绝对是一个不错的选择。我担心OP中有一个类似“10.18”的字符串表示10:18,并使用parseDouble将其转换为double。在这种情况下,使用“%100”获取分钟数是“正确的”。但是整个方法都失败了,我用mod函数来得到剩余的分钟数。这只是将小时与分钟分开。@Elliott:这种方法从根本上被打破了。想想当字符串是“10.2”或“10.02”时会发生什么。这是否会导致使用相同的时间?它会导致同时被使用吗?对不起,我不明白你问什么。当我再次尝试时,我发现一些完全错误的东西,您建议如何进行计算?谢谢。10点18分和09点35分之间的差距确实是43分钟。你为什么说它是83?是的,我刚刚发现,我的想法是错误的:pdo我需要导入日历函数?使用DateFormat可以得到两个日期对象之间的时间差
Calendar time1 =  Calendar.getInstance();
// assign time1 date from your array

Calendar time2 =  Calendar.getInstance();
// assign time2 date from your array

long diff = time1.getTimeInMillis() - time2.getTimeInMillis();
long timeMillis = System.currentTimeMillis();
System.out.println("Current time in millis:"+timeMillis);     
Thread.sleep(1200);   
long timeMillis2 = System.currentTimeMillis();
System.out.println("Current time in millis:"+timeMillis2);
System.out.println("Difference betwwen 2 times:"+(timeMillis2-timeMillis));