以30分钟(最近的半小时)递增:

以30为增量舍入整数的最有效方法(在Java中)是什么。 我的输出将是一个整数:

这是我的代码,它以整数forms返回分钟。

long different = endTime.getTime() - startTime.getTime(); int idiff = TimeUnit.MILLISECONDS.toMinutes(different) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(different)); 

现在我想整理这个整数。 例如:

任何数字<= 30 =最多30个:

31到60之间的任何数字=最多60个

61到90之间的任何数字=最多90个

91到120之间的任何数字=最多120个

任何数字在121到150之间=最多150

添加一个比你想要的组少,然后除和多..所以30做

 ((value + 29) / 30) * 30 

这假设您希望0保持0,30保持30 …

这应该工作:

 x = ((x+30)/30) * 30; 

例子 :

 ((15+30)/30)*30 == (45/30)*30 == 1*30 == 30 ((30+30)/30)*30 == (60/30)*30 == 2*30 == 60 ((47+30)/30)*30 == (77/30)*30 == 2*30 == 60 ... 

编辑:

OP改变要求后(30应该保持30):

 x = ((x+29)/30) * 30; 

例子 :

 ((15+29)/30)*30 == (44/30)*30 == 1*30 == 30 ((30+29)/30)*30 == (59/30)*30 == 1*30 == 30 ((47+29)/30)*30 == (76/30)*30 == 2*30 == 60 ...