/**
 * 根据输入日期值输出所在季度起始日期
 */
public class Test {

	public static void main(String[] args) {
		// TODO 自动生成方法存根
		String[] a = getQuarterDate("20070818");
		for (String s : a) {
			System.out.println(s);
		}
	}

	public static String[] getQuarterDate(String tradeDate) {
		String[] array = new String[2];

		try {
			java.util.Date date = new java.text.SimpleDateFormat("yyyyMMdd")
					.parse(tradeDate);
			java.util.Calendar cal = java.util.Calendar.getInstance();
			cal.setTime(date);
			if ((cal.get(cal.MONTH) + 1) % 3 == 0)// 季度结束月
			{
				array[1] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMinimum(cal.DATE);// 结束日期
				cal.add(cal.MONTH, -2);
				array[0] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMaximum(cal.DATE);// 开始日期
			} else if ((cal.get(cal.MONTH) + 2) % 3 == 0)// 季度中间月
			{
				cal.add(cal.MONTH, -1);
				array[0] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMinimum(cal.DATE);// 开始日期
				cal.add(cal.MONTH, +2);
				array[1] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMaximum(cal.DATE);// 结束日期
			} else if ((cal.get(cal.MONTH) + 3) % 3 == 0)// 季度起始月
			{
				array[0] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMinimum(cal.DATE);// 开始日期
				cal.add(cal.MONTH, +2);
				array[1] = cal.get(cal.YEAR) + " " + (cal.get(cal.MONTH) + 1)
						+ " " + cal.getActualMaximum(cal.DATE);// 结束日期
			}
		} catch (java.text.ParseException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		return array;
	}
}
输出:
2007 7 1
2007 9 30
评论
发表评论

您还没有登录,请登录后发表评论

javaboy2006
搜索本博客
我的相册
A84ce64e-d101-3dad-9e62-8780e1c003ea-thumb
CommandPattern2
共 11 张
最近加入圈子
存档
最新评论