⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateutil.java

📁 日期类
💻 JAVA
字号:
package com.frame.util;

import java.util.Calendar;
import java.util.Date;

import com.frame.exception.FrameException;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author <a href=mailto:wolf_chy@sina.com>Steven Cheng</a>
 * @version 1.0
 */

public class DateUtil {

	/**
	 * 得到当前日期(java.sql.Date类型),注意:没有时间,只有日期
	 * @return 当前日期
	 */
	public static java.sql.Date getDate() {
		Calendar oneCalendar = Calendar.getInstance();
		return getDate(
			oneCalendar.get(Calendar.YEAR),
			oneCalendar.get(Calendar.MONTH) + 1,
			oneCalendar.get(Calendar.DATE));
	}

	/**
	 * 根据所给年、月、日,得到日期(java.sql.Date类型),注意:没有时间,只有日期。
	 * 年、月、日不合法,会抛IllegalArgumentException(不需要catch)
	 * @param yyyy 4位年
	 * @param MM  月
	 * @param dd  日
	 * @return 日期
	 */
	public static java.sql.Date getDate(int yyyy, int MM, int dd) {
		if (!verityDate(yyyy, MM, dd))
			throw new IllegalArgumentException("This is illegimate date!");

		Calendar oneCalendar = Calendar.getInstance();
		oneCalendar.clear();
		oneCalendar.set(yyyy, MM - 1, dd);
		return new java.sql.Date(oneCalendar.getTime().getTime());
	}

	/**
	 * 根据所给年、月、日,检验是否为合法日期。
	 * @param yyyy 4位年
	 * @param MM  月
	 * @param dd  日
	 * @return
	 */
	public static boolean verityDate(int yyyy, int MM, int dd) {
		boolean flag = false;

		if (MM >= 1 && MM <= 12 && dd >= 1 && dd <= 31) {
			if (MM == 4 || MM == 6 || MM == 9 || MM == 11) {
				if (dd <= 30)
					flag = true;
			} else if (MM == 2) {
				if (yyyy % 100 != 0 && yyyy % 4 == 0 || yyyy % 400 == 0) {
					if (dd <= 29)
						flag = true;
				} else if (dd <= 28)
					flag = true;

			} else
				flag = true;

		}
		return flag;
	}

	/**
	 * 检查日期字符串是否正确。格式:yyyy-MM-dd
	 * @param dateString
	 * @return
	 */
	public static boolean checkDateString(String dateString) {
		boolean check = false;
		try {
			Date oneDay = TypeCast.stringToDate(dateString, "", true);
			Calendar ca = Calendar.getInstance();
			ca.clear();
			ca.setTime(oneDay);
			int yyyy = ca.get(Calendar.YEAR);
			if (yyyy >= 1000 && yyyy <= 9999)
				check = true;
		} catch (FrameException e) {
			check = false;
		}
		return check;
	}

	/**
	 * 得到日期字符串的年,必须是4位数字。
	 * @param dateStr
	 * @return
	 * @throws AppException
	 */
	public static String getYear(String dateStr) throws FrameException {

		Date oneDay = TypeCast.stringToDate(dateStr, "", true);
		Calendar ca = Calendar.getInstance();
		ca.clear();
		ca.setTime(oneDay);
		int yyyy = ca.get(Calendar.YEAR);
		if (yyyy < 1000 || yyyy > 9999)
			throw new FrameException(
				GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
				"| 错误的年! |");

		return "" + yyyy;

	}
	/**
	 *根据所给的起始,终止时间来计算间隔天数
	 *@param startDate
	 *@param endDate
	 *@return 间隔天数
	 */
	public static int getIntervalDay(
		java.sql.Date startDate,
		java.sql.Date endDate) {
		long startdate = startDate.getTime();
		long enddate = endDate.getTime();
		long interval = enddate - startdate;
		int intervalday = (int) interval / (1000 * 60 * 60 * 24);
		return intervalday;
	}
	/**
	 *获取输入时间后n个月的YYYYMM
	 *@param inputDate
	 *@param n
	 *@return
	 */
	public static String getYearAndMonth(String dateStr, int n)
		throws FrameException {
		Date oneDay = TypeCast.stringToDate(dateStr, "", true);
		Calendar ca = Calendar.getInstance();
		ca.clear();
		ca.setTime(oneDay);

		ca.set(Calendar.MONTH, ca.get(Calendar.MONTH) + n);

		int yyyy = ca.get(Calendar.YEAR);
		if (yyyy < 1000 || yyyy > 9999)
			throw new FrameException(
				GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
				"| 错误的年! |");
		int MM = ca.get(Calendar.MONTH) + 1;
		String month = "" + MM;

		if (MM < 10)
			month = "0" + MM;
		return "" + yyyy + month;
	}
	/**
	 *根据所给的起始,终止时间来计算间隔月数
	 *@param startDate YYYYMM
	 *@param endDate  YYYYMM
	 *@return 间隔月数
	 */
	public static int getIntervalMonth(String startDate, String endDate) {
		int startYear = Integer.parseInt(startDate.substring(0, 4));
		int startMonth = 0;
		if (startDate.substring(4, 5).equals("0"))
			startMonth = Integer.parseInt(startDate.substring(5));
		startMonth = Integer.parseInt(startDate.substring(4, 6));

		int endYear = Integer.parseInt(endDate.substring(0, 4));
		int endMonth = 0;
		if (endDate.substring(4, 5).equals("0"))
			endMonth = Integer.parseInt(endDate.substring(5));
		endMonth = Integer.parseInt(endDate.substring(4, 6));

		int intervalMonth =
			(endYear * 12 + endMonth) - (startYear * 12 + startMonth);
		return intervalMonth;
	}
	/**
	 * 得到年月,yyyyMM格式
	 * @param dateStr
	 * @return
	 * @throws AppException
	 */
	public static String getYearAndMonth(String dateStr)
		throws FrameException {
		Date oneDay = TypeCast.stringToDate(dateStr, "", true);
		Calendar ca = Calendar.getInstance();
		ca.clear();
		ca.setTime(oneDay);
		int yyyy = ca.get(Calendar.YEAR);
		if (yyyy < 1000 || yyyy > 9999)
			throw new FrameException(
				GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
				"| 错误的年! |");
		int MM = ca.get(Calendar.MONTH) + 1;
		String month = "" + MM;
		if (MM < 10)
			month = "0" + MM;
		return "" + yyyy + month;
	}

	public static void main(String[] args) {
		try {
			System.out.println("aaaaaaaaaaaaaaaaaa");
			//System.out.println(DateUtil.getYear("2003-01-21"));
			System.out.println(DateUtil.getYearAndMonth("2003-01-01"));
			System.out.println(
				DateUtil.getYearAndMonth(
					(new java.sql.Date(System.currentTimeMillis())).toString(),
					-1));
		} catch (Exception e) {
			e.printStackTrace();
		}
		//    java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//
		//    System.out.println(format.format(getDate()));
		//    System.out.println(format.format(getDate(2000,2,29)));
		//Date date = format.parse("1999/01/20");
		//Date date = java.text.DateFormat.getDateInstance()
		//System.out.println(format.format(date));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -