Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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_Math_Time - Fatal编程技术网

Java 整数时间间隔

Java 整数时间间隔,java,math,time,Java,Math,Time,这个问题更像是一道数学题(对不起,我数学不好) 我将时间表示为整数 比如说 700 (means 7:00) 1330 (means 13:30) 2359 (means 23:59) 我有一个开始时间和结束时间,并希望在它们之间创建15分钟的间隔。比如说 int start = 700; int end = 1300; 我想循环开始时间,增加15分钟,然后跳过60到下一个100分钟。例如,700、715、730、745、800、815、830。。等等 我可以通过创建一个Calendar

这个问题更像是一道数学题(对不起,我数学不好)

我将时间表示为整数

比如说

700 (means 7:00)

1330 (means 13:30)

2359 (means 23:59)
我有一个开始时间和结束时间,并希望在它们之间创建15分钟的间隔。比如说

int start = 700;
int end = 1300;
我想循环开始时间,增加15分钟,然后跳过60到下一个100分钟。例如,700、715、730、745、800、815、830。。等等

我可以通过创建一个
Calendar
对象来创建它,并将整数解析为
SimpleDateFormat
,将时间添加到日历中,增加分钟数,然后将小时数和分钟数解析回整数。但是它太长了,所以应该有一个简单的数学方法来更有效地执行它。

使用这个类。这有一个plusMinutes方法,您可以使用它将基本时间增加15分钟

也许像

LocalTime baseTime = LocalTime.of(((int)myNumber/100),myNumber%100);
while(...){
   LocalTime myTime=baseTime.plusMinutes(15);
}
使用该类。这有一个plusMinutes方法,您可以使用它将基本时间增加15分钟

也许像

LocalTime baseTime = LocalTime.of(((int)myNumber/100),myNumber%100);
while(...){
   LocalTime myTime=baseTime.plusMinutes(15);
}
要将“整数编码”时间转换为分钟,请执行以下操作:

int encoded = 2359;
int minutes = (encoded / 100) * 60 + encoded % 100;
有分钟后,可以添加分钟或毫秒:

long milliseconds = minutes * 3_600_000L;
要将“整数编码”时间转换为分钟,请执行以下操作:

int encoded = 2359;
int minutes = (encoded / 100) * 60 + encoded % 100;
有分钟后,可以添加分钟或毫秒:

long milliseconds = minutes * 3_600_000L;

如果必须使用整数,或者决定使用整数,则可以创建一个方法“plusMinutes”,如:

另一种选择(我认为更好)是创建一个方法“toMinutes”和一个方法“toEncoded”,如:

注意:无法100%确定代码是否有效,尚未测试,但您应该了解总体思路

编辑:对于使用最后一个选项时出现的问题,您只需执行以下操作:

int encoded = 1330;
int plusMinutes = 45;

int minutes = toMinutes(encoded);
minutes += plusMinutes;

encoded = toEncoded(minutes);

如果必须使用整数,或者决定使用整数,则可以创建一个方法“plusMinutes”,如:

另一种选择(我认为更好)是创建一个方法“toMinutes”和一个方法“toEncoded”,如:

注意:无法100%确定代码是否有效,尚未测试,但您应该了解总体思路

编辑:对于使用最后一个选项时出现的问题,您只需执行以下操作:

int encoded = 1330;
int plusMinutes = 45;

int minutes = toMinutes(encoded);
minutes += plusMinutes;

encoded = toEncoded(minutes);

已经有了相当好的答案

从API的角度来看,您应该使用user1717259建议的日期和时间API,它为“计算”时间提供了最佳选项。这将产生最自我解释和可维护的代码

对于从时间编码int开始计算分钟和小时,也有很好的建议

如果使用
int
s是一种约束,并且您只想计算给定起始值和间隔的下一个int,那么以下函数可能会有所帮助

int inc(int currentTime, int interval) {
    return (((currentTime +interval) / 100) + ((currentTime+interval) % 100 / 60)) * 100 + ((currentTime+interval) % 100 % 60);
}
解释的功能包括:

  • currentTime+interval
    是您的间隔增加,也可以用单独调用
    currentTime+=interval
    替换
  • (当前时间+间隔)/100)
    将为您提供小时
  • ((当前时间+间隔)%100/60))
    将为您获取
    0
    1
    如果您超过一小时
  • *100
    将小时值重新计算为hh00格式
  • ((当前时间+间隔)%100%60)
    将计算与小时重叠的分钟数,
    %100
    将计算分钟数,
    %60
    将计算小时数上的分钟数,并将其添加到新的小时值中
您可以使用

for(int i = 700; i <= 1300; i = inc(i, 15)){
    System.out.println(i);
}

对于(inti=700;i已经有了相当好的答案

从API的角度来看,您应该使用user1717259建议的日期和时间API,它为“计算”时间提供了最佳选项。这将生成最自我解释和可维护的代码

对于从时间编码int开始计算分钟和小时,也有很好的建议

如果使用
int
s是一种约束,并且您只想计算给定起始值和间隔的下一个int,那么以下函数可能会有所帮助

int inc(int currentTime, int interval) {
    return (((currentTime +interval) / 100) + ((currentTime+interval) % 100 / 60)) * 100 + ((currentTime+interval) % 100 % 60);
}
解释的功能包括:

  • currentTime+interval
    是您的时间间隔增加,也可以在之前单独调用
    currentTime+=interval
  • (当前时间+间隔)/100)
    将为您提供小时
  • ((当前时间+间隔)%100/60))
    将为您获取
    0
    1
    如果您超过一小时
  • *100
    将小时值重新计算为hh00格式
  • ((当前时间+间隔)%100%60)
    将计算与小时重叠的分钟数,
    %100
    将计算分钟数,
    %60
    将计算小时数上的分钟数,并将其添加到新的小时值中
您可以使用

for(int i = 700; i <= 1300; i = inc(i, 15)){
    System.out.println(i);
}

对于(inti=700;i这个神奇公式是((j=i%100+15)%60)+((i/100+j/60)*100)


这个神奇的公式是((j=i%100+15)%60)+((i/100+j/60)*100)


谢谢,这是我想要的方式。添加分钟并转换回EncodedHanks,这是我想要的方式。添加分钟并转换回encodedImpressive,一个单一公式!很棒的工作令人印象深刻,一个单一公式!很棒的工作