如何获得两个月或更长时间之间的小时数?

时间:2018-04-02 08:26:19

标签: java android

实施默认范围选择器,我希望用户指定默认范围

所以在我的范围内 我有

1 day = 24 hours
3 days = 24 * 3 hours
1 week = 24 * 7 hours
1 month

我的逻辑是使用一天中的总小时数并乘以总天数

但现在当问题范围变得超过2个月时会出现问题,因为有些月份有31天,28天甚至30天

那我怎么去确定最近两个月的例子小时数,以便在我的日历中我可以简单地

 Calendar cal = Calendar.getInstance();
 cal.add(Calendar.HOUR, cal.get(Calendar.HOUR) - hours) //stuck here

以简单的术语示例

今天是4月2日,我如何获得从1月2日到4月2日的小时数。

在我自己的逻辑中它超过一个月应该看起来像:

 Date today = Date.now();    
 LocalDate userday = LocalDate.of(less number of months); 
 Period diff = Period.between(userday, today); 

3 个答案:

答案 0 :(得分:2)

试试这个

% enumerate all people and
% return the ones that aren't rich
isPoor(P) :-
    owns(P,_),
    \+ isRich(P).

更新的答案:

Calendar calendar = Calendar.getInstance();
calendar.set(2018,Calendar.JANUARY, 2);
Long min = calendar.getTimeInMillis();
calendar.set(2018,Calendar.APRIL, 2);
Long max = calendar.getTimeInMillis();
Long range = (max - min) / (60*60*1000); //no_of_hours

答案 1 :(得分:2)

您可以像下面一样减去月份,

Date referenceDate = new Date();
Calendar c = Calendar.getInstance(); 
c.setTime(currentDate); 
c.add(Calendar.MONTH, -3);
return c.getTime();

然后从下面的代码中获取数小时。

long diff = currentDate.getTime() - previousDate.getTime();
long hours = minutes / (1000 * 60 * 60);

答案 2 :(得分:0)

您需要一个月内的天数。

一旦确定它是哪个月,它很容易:

看看这个: Number of days in particular month of particular year?

一旦你有月份,只需计算它的小时数,并继续添加,直到你满足你的范围。