我每天都在失去一分钟,而我的日子是23:59而不是24

时间:2013-11-02 00:29:32

标签: java date calendar

我的一天从2013年11月2日00:00开始,结束于23:59,因为新的一天是2013年11月3日00:00 - 数学23:59 - 00:00我得到23:59,这意味着我每天都会失去1分钟。 我是否需要每次添加+1分钟才能获得24:00的结果。 如果是这样我怎么能处理这个问题:23:59因为新的一天开始并结束23:59?

有时在1分钟内点击几次给我

Opt1 clock start 12:30 end 12:30 = 0 min
Opt2 clock start 12:30 end 12:30 = 0 min
Opt1 clock start 12:30 end 12:30 = 0 min
Opt2 clock start 12:30 end 12:31 = 1 min

这么久很好但我不知道“时钟开始23:59结束23:59”是否是实际工作或者是错误。 如果这是一个错误,那么0分钟就可以了,但如果不是一个错误,那么我将失去1分钟。

我在一个小型计时器上工作,我找不到那个问题的解决方案。

也许我需要用户额外确认?

但是当它到达23:59:59时它会自动切换到新的一天所以我得到23:59作为前一天的最后一点,新的一天从00:00开始。

如何获得合适的时间? 同样是晚上11:59和凌晨12:00 - 再次当天晚上11:59结束,因为新的开始时间是凌晨12:00,对吗?

那么如何补偿1分钟?

更新:

时间格式是      SimpleDateFormat foutputFormat = new SimpleDateFormat(“dd / MM / yyyy HH:mm”);

解析日期,然后进行简单的数学

 mint+= (finishd[i].getTime()/60000) - (startd[i].getTime() / 60000);

 ////System.out.println(mint);
 int h=(int)mint/60;
 int m=(int)mint-(h*60);
 ////System.out.println("Min: " +mint);
 String totaltime = h + "h"+":" + m+"min";
 ////System.out.println("H: " + h + "Min: " + m);

问题出在我的时候:从01/03/2004 00:00开始到2004年3月3日23:59结束。第二天将于02/03/2004 00:00开始。 我得到23小时:59分钟工作时间而不是24小时 - 整整一天我使用SQL数据库来保存和读取数据。数据格式“dd / MM / yyyy HH:mm”;

几乎就在那里:D 对我来说,最后一个问题是我需要像这样做数学:

pause 10:20 - 10:40 = 20 min OK
working 10:40 - 12:42 = 2h:2min OK
pause 12:42 - 12:57 = 15 min OK
working 12:57 - 12:57 = 0 OK
pause 12:57 - 12:57 = 0 OK
working 12:57 - 16:00 = 3h:3min OK
Total work 5h:5min / pause 35min OK

最后是23:59问题:

 working 22:00 - 23:59 = 1h:59m missing 24! 1min lost

 NEW DAY working 00:00 - 04:30 = 4h:30min OK

那么如何解决最后一次23:59的问题       23:59 - 23:59暂停= 0分钟确定

或者可以是

  day1 23:59 - day2 00:20  = 21min ? 

但SQL只能将信息存储为00-59min 00-23h

然后如果我需要那天的总工作和总停顿: 我可以总结那天的所有记录,当我暂停+工作时,我将得到23:59h

2 个答案:

答案 0 :(得分:3)

思考这个问题的方式有问题。

每天有60 * 24分钟= 1440.第一天是00:00。最后一次是23:59。

minutes(23:59) - minutes(00:00)不是1440的原因是,这不是计算一天中分钟数的正确方法!正确的方法minutes(day 2 00:00) - minutes(day 1 00:00)

这是小学阶段的数学。

答案 1 :(得分:1)

这部分是关于“包容性/排他性”或封闭/开放界限,部分是关于减法。

这一天从0000开始。同一天在2400小时结束 - 这是您可以测量的端点,而不是您可以开始的时间。

因此,一天正确24小时。

您可以将端点“近似”为23:55,23:59,23:59,23:59:59,23:59:59.999,或者您希望大致但不正确接近它。但实际正确的终点将始终为2400小时,即第二天的0000小时。

不要将“结束日”时间存储为23:59,错误地使用不准确的近似值而不是使基本原理正确只会导致更多问题。

计算“工作时间”次数时,一个简单的规则:

  1. 将开始时间缩小到最接近的前一分钟。
  2. 将结束时间缩短到下一分钟。
  3. 这将确保记录的工作持续时间始终> = 1分钟,除非两者都开始&结束几乎完全相同的毫秒。确保你的代码无论如何都能以0持续时间运行 - 它可以在0时充电,这很好,它不应该崩溃。

    循环中出现同样的问题。图形 - 一个好的循环它的下限(包括)开始,但在下面它的上限(不包括)。这给出了hi-lo = count的属性。

    类似于像素 - 我们可以最好地将每个小像素可视化为网格线之间的彩色方形 。我们测量网格线,并在它们之间填充像素 。因此,从网格线0到网格线1的矩形仅在这些边界之间填充一个像素,并正确地给出宽度为1.