[英]How to Get the number of hours between two or more months?
我正在实现默认范围选择器,我希望用户指定默认持续时间范围
所以在我的范围内
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);
尝试这个
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
更新的答案:
Calendar calendar = Calendar.getInstance();
Long max = calendar.getTimeInMillis();
int currMonth = calendar.get(Calendar.MONTH);
int currYear = calendar.get(Calendar.YEAR);
int currDate = calendar.get(Calendar.DAY_OF_MONTH);
int expMonth = currMonth + 3/*no_of_month*/;
int expYear = currDate;
int expDate = calendar.get(Calendar.DAY_OF_MONTH);
while (expMonth > 11) {
expMonth = expMonth - 12;
expYear = expYear + 1; // will increment year as next month falls in next year
}
calendar.set(expYear, expMonth, expDate);
Long min = calendar.getTimeInMillis();
Long range = (max - min) / (60 * 60 * 1000); //no_of_hours
您可以像下面这样减去月份,
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.