`
daichangfu
  • 浏览: 260329 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java计算X天后和X月后日期的方法

    博客分类:
  • java
阅读更多
import java.text.SimpleDateFormat;
import java.util.Date;

public class OfterDate {

	/**
	 * 计算X天后的日期(天数不要大于28)
	 * 
	 * @param x
	 * @return
	 */
	public static String ofterDayDate(int x) {
		Date date = new Date();
		int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date));
		int month = Integer.parseInt(new SimpleDateFormat("MM").format(date));
		int day = Integer.parseInt(new SimpleDateFormat("dd").format(date)) + x;

		if (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11)) {
			day = day - 30;
			if (month == 12) {
				month = 1;
				year = year + 1;
			} else {
				month = month + 1;
			}
		} else if (day > 31
				&& (month == 1 || month == 3 || month == 5 || month == 7
						|| month == 8 || month == 10 || month == 12)) {
			day = day - 31;
			if (month == 12) {
				month = 1;
				year = year + 1;
			} else {
				month = month + 1;
			}
		} else if (month == 2) {
			if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
				if (day > 29) {
					day = day - 29;
					month = 3;
				}
			} else {
				if (day > 28) {
					day = day - 28;
					month = 3;
				}
			}
		}

		String y = year + "-";
		String m = "";
		String d = "";
		if (month < 10)
			m = "0" + month + "-";
		else
			m = month + "-";
		if (day < 10)
			d = "0" + day;
		else
			d = day + "";
		return y + m + d;
	}

	/**
	 * 计算x月后的日期
	 * 
	 * @param x
	 * @return
	 */
	public static String ofterMonthDate(int x) {
		Date date = new Date();
		int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date));
		int month = Integer.parseInt(new SimpleDateFormat("MM").format(date))
				+ x;
		int day = Integer.parseInt(new SimpleDateFormat("dd").format(date));
		if (month > 12) {
			year += month/12;
			month = month%12;
		}
		if (day > 28) {
			if (month == 2) {
				if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
					day = 29;
				} else
					day = 28;
			} else if ((month == 4 || month == 6 || month == 9 || month == 11)
					&& day == 31) {
				day = 30;
			}
		}
		String y = year + "-";
		String m = "";
		String d = "";
		if (month < 10)
			m = "0" + month + "-";
		else
			m = month + "-";
		if (day < 10)
			d = "0" + day;
		else
			d = day + "";
		return y + m + d;
	}
}


有错误欢迎留言纠正!!
分享到:
评论
3 楼 lovehzh 2011-10-18  
很不错,谢谢
2 楼 bbdd21 2011-10-18  
给你个简单的实现 看看是否是你想要的
/**
	 * 得到计算的日期
	 * @param date 要计算的日期
	 * @param field 计算的周期格式<br> Calendar.YEAR Calendar.MONTH Calendar.DAY_OF_WEEK
	 * @param amount 计算的周期数
	 * @param formart 返回的日期格式
	 * @return
	 */
	public static String getAmountDate(Date date, int field , int amount){
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar calendar = Calendar.getInstance();   
		calendar.setTime(date);
		calendar.add(field, amount);
		return df.format(calendar.getTime());
	}
1 楼 hq123xiao 2011-10-11  
89行插入代码
else {
                day = 31 ;
            }

相关推荐

Global site tag (gtag.js) - Google Analytics