java计算两个时间相隔月数,考虑闰年

我用的J2ME相对类比较少,希望能用Date类就能解决,例如SimpleDateFormat和GregorianCalendar等时间类都用不了.

我试图这样解决:
month1=(year1-year2)*12;
month2=month1-month2;
if(day1>=day2){
monthdiff=month1+month2+1;
else{
monthdiff=month1+month2-1;
}
思路不知道是否正确,另外在减天数时没有考虑到闰年,所以恳请大家帮忙解决.

/**
* 判断平闰年方法
*/
public void pingrunnian() {
int year = 0;
//从组件处得到年份(这里是用下拉菜单做的)
if (jtf3.getSelectedIndex() > 0) {
year = (Integer) jtf3.getSelectedItem();
}
int month = 0;
//从组件处得到月份(这里是用下拉菜单做的)

if (jtf4.getSelectedIndex() > 0) {
month = (Integer) jtf4.getSelectedItem();
}
int day = 0;
switch (month) {
//大月
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
//小月
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if ((0 == year % 400) || (0 == year % 4 && 0 != year % 100)) {
day = 29;
} else {
day = 28;
}
break;
}
//下面的是向组件里添加得到的值的。 上面才是关键
//jtf5.removeAllItems();
//jtf5.addItem("DD");
//for (int i = 1; i <= day; i++) {
// jtf5.addItem(i);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
java中Calendar类提供了月份计算方法的,直接通过Month方法进行计算得出月份差,之后算出年份的差乘以12,之后的和就是月份差。
public void monthSpace() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str1 = "2012-02-01";
String str2 = "2012-02-2";

Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
bef.setTime(sdf.parse(str1));
aft.setTime(sdf.parse(str2));
int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);
int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR))*12;
System.out.println(month+result );
}
第2个回答  2008-01-31
int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&year%100!=0 or year%400==0){//闰年
day[1]++;
}

其实您是可以用那个自 1970年1月1日来毫秒数来对比相减再除于一定格式的时间就可以知道想距多少时间了
第3个回答  2015-10-06
* 判断平闰年方法
*/
public void pingrunnian() {
int year = 0;
//从组件处得到年份(这里是用下拉菜单做的)
if (jtf3.getSelectedIndex() > 0) {
year = (Integer) jtf3.getSelectedItem();
}
int month = 0;
//从组件处得到月份(这里是用下拉菜单做的)

if (jtf4.getSelectedIndex() > 0) {
month = (Integer) jtf4.getSelectedItem();
}
int day = 0;
switch (month) {
//大月
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
//小月
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if ((0 == year % 400) || (0 == year % 4 && 0 != year % 100)) {
day = 29;
} else {
day = 28;
}
break;
}
//下面的是向组件里添加得到的值的。 上面才是关键
//jtf5.removeAllItems();
//jtf5.addItem("DD");
//for (int i = 1; i <= day; i++) {
// jtf5.addItem(i);
}
}

用JAVA怎么判断两个日期之间是否为一整年,要考虑到闰年问题。有点复杂...
public static boolean isOneYear(Date start, Date end) { Calendar startday = Calendar.getInstance();Calendar endday = Calendar.getInstance();startday.setTime(start);endday.setTime(end);if (startday.after(endday)) { return false;} long sl = startday.getTimeInMillis();long el ...

使用js或者JAVA实现日期之间相差多少个整月,闰年和普通年都得计算
我说下,这个两个日期之间的那个方法我忘了,不过的确两个相隔日期得不到准确月数,这个月份是按照真实相隔,还是按照30天数数一个月计数的也未知,不过看代码提示应该是按天计算的,那么你就必须对这个年份进行处理判断闰年等,然后根据闰年来计算每个月的天数,接着根据天数来判断有几个月,建议你自己...

编写一个java方法,返回两个给定日期的相差天数
} } \/** * 计算两个日期之间的天数 * * @param start * 开始日期 * @param end * 结束日期 *\/ public static long calculate(MyDate start, MyDate end) { long sum = 0; int startYear = start.year; int endYear = end.year; int...

编写java程序判断闰年。
boolean b1 = year%4==0;boolean b2 = year%100!=0;boolean b3 = year%400==0;if(b1&&b2||b3){ System.out.println("闰年");}else{ System.out.println("不是闰年");} \/\/用if语句判断 int year2=2018;if(year2 % 4 == 0 && year2 % 100 != 0 || year2 % 400 == 0)...

JAVA C# 如果求两个日期之间相差多少年,月,周,日
C#中很简单。DateTime time1 = 取时间1;DateTime time2 = 取时间2;系统自带的方法:(time2-time1). TotalSeconds; \/\/ 差值秒数 .TotalMinutes; \/\/差值分 TotalHours; \/\/差值 时 TotalDays; \/\/差值天

两个日期之间的天数
你好,2008年是闰年,有366天,从2008-11-16到12-31有46天;2009和2010年是平年,都有365天;2011年是平年,1月31天,2月28天,3月31天,4-1到4-27有27天,共31+28+31+27=117天;总共46+365x2+117=893天。

java输入年份和月份,判断输出该月有多少天!闰年2月:28天,!平年:28天
Long month=scan.nextLong();if(year%4 == 0 && year%100!=0 || year%400 == 0){\/\/是闰年 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ System.out.print(year+"年"+month+"月有31天");}else if(month==2){ System.out.print(year...

用java怎么计算两个日期之间年数,季度数,月数
这些是确定的数值? 不考虑闰年什么的?java.util.Date有方法, getTime(),得到毫秒差,,,那两个时间的毫秒差的结果,再换算成相应的年或季或月 ~~~

用java编写:输入任意年份和月份,输出对应月份的天数。
用 java编写:输入任意年份和月份,输出对应月份的天数,首先判断输入年份是否是闰年,然后使用switch 方法判断月份,判断代码如下:public class GetDays { public static int getDays(int year, int month) {int days = 0;boolean isLeapYear = false;if (((year % 4 == 0) && (year % 100 !...

用Java程序判断是否是闰年
TODO Auto-generated method stub year=Integer.parseInt(txt.getText());if(year%4==0&;&;(year%100)!=0){leap=true;} else if(year%400==0){ leap=false;} if(leap==true)lblResult.setText(year+"年是闰年");else lblResult.setText(year+"年是平年");txt.setText("");} } ...

相似回答