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

📄 dateutil.java

📁 javaEE 原代码 javaEE 原代码
💻 JAVA
字号:
package com;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;



public class DateUtil {
	public DateUtil() {
	}

	/**
	 * 转换日期格式
	 * 
	 * @param 正确日期格式为
	 *            yyyy-mm-dd 00:00:00
	 * @return
	 */
	public static Date parseDate(String date) throws SysException {
		Date ret = null;
		if (date == null || date.length()==0) {
			return null;
		}

		DateFormat df = null;

		if (date.indexOf(" ") > 0) { // 日期&时间
			if (date.split(":").length == 2) {
				date += ":00";
			}
			df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
		} else { // 日期
			df = DateFormat.getDateInstance(2, Locale.CHINA);
		}

		try {
			ret = df.parse(date);
		} catch (ParseException pe) {
			throw new SysException("APP-1003", "APP", "录入的日期格式错误",
					DateUtil.class.getName() + ":parseDate()", null, pe,
					"字符串转日期类型异常");
		}

		return ret;
	}

	public static String toString(Date date) {
		if (date == null) {
			return "";
		}

		DateFormat df = DateFormat.getDateInstance(2, Locale.CHINA);
		String ret = df.format(date);

		return ret;
	}

	public static String toString(Date date, boolean hasTime) {
		if (date == null) {
			return "";
		}

		DateFormat df = null;

		if (hasTime) {
			df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
		} else {
			df = DateFormat.getDateInstance(2, Locale.CHINA);
		}

		String ret = df.format(date);

		return ret;
	}

	/**
	 * @param date
	 * @param iDays
	 *            间隔天数
	 * @param hasTime
	 * @return
	 */
	public static String toString(Date date, int iDays, boolean hasTime) {
		String ret = "";
		if (date == null) {
			return "";
		}
		Calendar ca = Calendar.getInstance();
		ca.setTime(date);
		ca.add(Calendar.DAY_OF_YEAR, iDays);
		ret = toDayString(ca, hasTime);
		return ret;
	}

	public static String toString(Date date, boolean hasTime, boolean hasYear) {
		if (date == null) {
			return "";
		}

		DateFormat df = null;

		if (hasTime) {
			df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
		} else {
			df = DateFormat.getDateInstance(3, Locale.CHINA);
		}

		String ret = df.format(date);

		return ret;
	}

	public static String toDayString(Calendar ca, boolean hasTime) {
		if (ca == null) {
			return "";
		}
		String ret = "";
		String sDate = "";
		String sTime = "";
		int iTemp = 0;

		iTemp = ca.get(Calendar.MONTH) + 1;
		if (iTemp < 10) {
			sDate = ca.get(Calendar.YEAR) + "-0" + iTemp;
		} else {
			sDate = ca.get(Calendar.YEAR) + "-" + iTemp;
		}
		iTemp = ca.get(Calendar.DAY_OF_MONTH);
		if (iTemp < 10) {
			sDate = sDate + "-0" + iTemp;
		} else {
			sDate = sDate + "-" + iTemp;
		}

		iTemp = ca.get(Calendar.HOUR_OF_DAY);
		if (iTemp < 10) {
			sTime = "0" + iTemp;
		} else {
			sTime = "" + iTemp;
		}
		iTemp = ca.get(Calendar.MINUTE);
		if (iTemp < 10) {
			sTime = sTime + ":" + "0" + iTemp;
		} else {
			sTime = sTime + ":" + iTemp;
		}
		iTemp = ca.get(Calendar.SECOND);
		if (iTemp < 10) {
			sTime = sTime + ":" + "0" + iTemp;
		} else {
			sTime = sTime + ":" + iTemp;
		}
		if (hasTime) {
			ret = sDate + " " + sTime;
		} else {
			ret = sDate;
		}

		return ret;
	}

	/* 产生时间选择框 */
	public static String getSelect(List collection, String name,
			String onchange, String selected, String attach) {
		StringBuffer ret = new StringBuffer();

		if ((collection == null) || (collection.size() == 0)) {
			return ret.toString();
		}

		ret.append("     <select name=\"" + name + "\"");

		if (onchange != null) {
			ret.append(" onchange=\"" + onchange + "\"");
		}

		ret.append(">\n");

		String tmp = "";

		for (int i = 0; i < collection.size(); i++) {
			tmp = (String) collection.get(i);
			ret.append("       <option value=\"");
			ret.append(tmp);
			ret.append("\"");

			if (tmp.equals(selected)) {
				ret.append(" selected ");
			}

			ret.append(">");
			ret.append(tmp);
			ret.append("</option>\n");
		}

		ret.append("     </select>");

		if (attach != null) {
			ret.append(attach);
		}

		ret.append("\n");

		return ret.toString();
	}

	public static String getHourSelect(String name) {
		Date now = new Date();
		return DateUtil.getHourSelect(name, now.getHours());
	}

	/**
	 * 产生小时选择列表
	 * 
	 * @param name
	 *            名称
	 * @param selected
	 *            选中值
	 * @return
	 */
	public static String getHourSelect(String name, int selected) {
		return DateUtil.getHourSelect(name, selected, "");
	}

	/**
	 * 产生小时选择列表
	 * 
	 * @param name
	 *            名称
	 * @param selected
	 *            选中值
	 * @param onchange
	 * @return
	 */
	public static String getHourSelect(String name, int selected,
			String onchange) {
		StringBuffer ret = new StringBuffer();
		ret.append("     <select name=\"" + name + "\" ");
		if (onchange != null && !onchange.equals("")) {
			ret.append(" onchange=\"" + onchange + "\"");
		}
		ret.append(" class=\"c1\">\n");

		String tmp = "";

		for (int i = 8; i < 21; i++) {
			if (i < 10) {
				tmp = "0" + i;
			} else {
				tmp = String.valueOf(i);
			}
			ret.append("       <option value=\"");
			ret.append(tmp + "\"");
			if (i == selected) {
				ret.append(" selected ");
			}
			ret.append(">");
			ret.append(tmp);
			ret.append("</option>\n");
		}

		ret.append("</select>");
		ret.append("\n");
		return ret.toString();
	}

	public static String getMinutesSelect(String name) {
		Date now = new Date();
		return DateUtil.getMinutesSelect(name, now.getMinutes());
	}

	public static String getMinutesSelect(String name, int selected) {
		Date now = new Date();
		return DateUtil.getMinutesSelect(name, selected, "");
	}

	/**
	 * 产生分钟选择列表
	 * 
	 * @param name
	 *            名称
	 * @param selected
	 *            选中值
	 * @return
	 */
	public static String getMinutesSelect(String name, int selected,
			String onchange) {
		StringBuffer ret = new StringBuffer();
		ret.append("     <select name=\"" + name + "\" ");
		if (onchange != null && !onchange.equals("")) {
			ret.append(" onchange=\"" + onchange + "\"");
		}
		ret.append(" class=\"c1\">\n");
		String tmp = "";

		for (int i = 0; i < 60; i += 5) {
			if (i < 10) {
				tmp = "0" + i;
			} else {
				tmp = String.valueOf(i);
			}
			ret.append("       <option value=\"");
			ret.append(tmp + "\"");
			if ((i - 5) < selected && selected <= i) {
				ret.append(" selected ");
			}
			ret.append(">");
			ret.append(tmp);
			ret.append("</option>\n");
		}

		ret.append("</select>");
		ret.append("\n");
		return ret.toString();
	}

	public static int getDays(String date1, String date2) throws SysException {
		Date sd = DateUtil.parseDate(date1);
		Date ed = DateUtil.parseDate(date2);
		return DateUtil.getDays(sd, ed);
	}

	public static int getDays(Date sd, Date ed) {
		long tmp = ed.getTime() - sd.getTime();
		if (tmp != 0) {
			tmp = tmp / (1000 * 60 * 60 * 24);
		}
		tmp++;
		return (int) tmp;
	}

	public static void main(String[] args) {
		try {
			// System.out.println(DateUtil.getMinutesSelect("hour"));
			// System.out.println(DateUtil.toString(new Date(),true));
			// System.out.println(DateUtil.getLastDayofMonth("2007-2-1"));
			// System.out.println(DateUtil.compareDate("2007-3-2","2007-3-2"));
			//String tmp = "2007-03-0001";
			//tmp = tmp.substring(0, 7);
			//System.out.println(tmp);
			//Calendar cNow = Calendar.getInstance();
			//System.out.println(cNow.get(Calendar.WEEK_OF_YEAR));
			//DateUtil.getPeriodForWeek("", 0);
			Calendar cNow = Calendar.getInstance();
			cNow.setTime(DateUtil.parseDate("2007-4-30"));
			cNow.add(Calendar.MONTH, -1);
			//System.out.println(DateUtil.toDayString(cNow, false));
			System.out.println(DateUtil.parseDate(""));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取某个日期所在月的最后一天
	 * 
	 * @param date
	 * @return
	 * @throws SysException
	 */
	public static String getLastDayofMonth(String date) throws SysException {
		String ret = "";
		Date start = DateUtil.parseDate(date);
		Calendar c = Calendar.getInstance();
		c.setTime(start);
		c.add(Calendar.MONTH, 1);
		c.set(Calendar.DATE, 1);
		c.add(Calendar.DATE, -1);
		ret = DateUtil.toDayString(c, false);
		return ret;
	}

	/**
	 * 获取某个日期所在月的最后一天,如果最后一天晚于日期end,则最后一天就为end
	 * 
	 * @param date
	 * @param end
	 * @return
	 * @throws SysException
	 */
	public static String getLastDayofMonth(String date, String end)
			throws SysException {
		String ret = "";
		Date start = DateUtil.parseDate(date);
		Calendar c = Calendar.getInstance();
		c.setTime(start);
		c.add(Calendar.MONTH, 1);
		c.set(Calendar.DATE, 1);
		c.add(Calendar.DATE, -1);
		Calendar ec = Calendar.getInstance();
		ec.setTime(DateUtil.parseDate(end));
		if (c.after(ec)) {
			ret = DateUtil.toDayString(ec, false);
		} else {
			ret = DateUtil.toDayString(c, false);
		}
		return ret;
	}

	public static int compareDate(String start, String end) throws SysException {
		Date sd = DateUtil.parseDate(start);
		return sd.compareTo(DateUtil.parseDate(end));
	}

	public static String[] getPeriodForWeek(String date, int addWeek)
			throws SysException {
		String[] period = new String[3];
		if (date != null && date.length()>0) {
			Calendar c = Calendar.getInstance();
			c.add(Calendar.DATE, addWeek*7);
			date = DateUtil.toDayString(c, false);
		}  
		Calendar ca = Calendar.getInstance();
		ca.setTime(DateUtil.parseDate(date));
		int day = ca.get(Calendar.DAY_OF_WEEK)-1;
		if(day == 0) {
			day = 7;
		}		
		ca.add(Calendar.DATE, 1-day);		
		period[0] = DateUtil.toDayString(ca, false);
		ca.add(Calendar.DATE, 6);	
		period[1] = DateUtil.toDayString(ca, false);
		period[2] = date;
		return period;
	}
}

⌨️ 快捷键说明

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