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

📄 dateutils.java

📁 struts+spring+hibernate自创框架
💻 JAVA
字号:
package com.pegasus.framework.util;

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;

import com.pegasus.framework.bo.QuaterDateOfYear;
import com.pegasus.framework.bo.StartEndDayMonth;

/**
 *
 */
public class DateUtils {
	public static Map<String,DateFormat> dateFormatMap = new HashMap<String,DateFormat>();
	
	/**
	 * 1秒的毫秒数
	 */
	public static final int MILLSEC = 1000;
	/**
	 * 一小时分钟数
	 */
	public static final int HOUR_MINUTES = 60;
	
	/**
	 * 一天小时数
	 */
	public static final int DAY_HOURS = 24;
	
	/**
     *一天的毫秒数
     */
    public static final int DAY_MILLSEC = 86400000;
    
    /**
     * 一共多少个月份
     */
    public static final int ALL_MONTH_COUNT = 12;
    
    
    
    
    
    
    
    
    
	public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
	public static final String DEFAULT_MONTH_PATTERN = "yyyy-MM";

	public static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";

	public static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

	public static final SimpleDateFormat dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);

	public static final SimpleDateFormat timeFormat = new SimpleDateFormat(DEFAULT_TIME_PATTERN);

	public static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DEFAULT_DATETIME_PATTERN);
	
	public static final SimpleDateFormat monthFormat = new SimpleDateFormat(DEFAULT_MONTH_PATTERN);
	
	static {
		dateFormatMap.put("date", dateFormat);
		dateFormatMap.put("time", timeFormat);
		dateFormatMap.put("dateTime", dateTimeFormat);
		dateFormatMap.put("month", monthFormat);
	}
		


	public static Date getToday() {
		return new Date(System.currentTimeMillis());
	}
	public static Time getTodayTime() {
		return new Time(System.currentTimeMillis());
	}
	
	public static String getNowYearStr() {
		Calendar thisYear = Calendar.getInstance();
		int iYear = thisYear.get(Calendar.YEAR);
		String result = new Integer(iYear).toString();
		return result;
	}
	
	public static String getNowMonthStr() {
		Calendar thisYear = Calendar.getInstance();
		int iMonth = thisYear.get(Calendar.MONTH);
		String result = new Integer(iMonth + 1).toString();
		return result;
	}

	public static Timestamp getTodayTimestamp() {
		return new Timestamp(System.currentTimeMillis());
	}

	public static Date getDateIgnoreMilliSecond(Date today) {
		return new Date(today.getTime() / 1000L * 1000L);
	}

	public static Date parse(String dateString) {
		return parse(dateString, "date");
	}
	
	
	
	public static java.sql.Date convertTo(java.util.Date date) {
		return new java.sql.Date(date.getTime());
	}

	public static java.util.Date convertTo(java.sql.Date date) {
		return new java.util.Date(date.getTime());
	}

	public static Date parse(String dateString, String pattern) {
		if (dateString != null) {
			DateFormat formatter = null;
			synchronized (dateFormatMap) {
				formatter = (DateFormat) dateFormatMap.get(pattern);
				if (formatter == null) {
					formatter = new SimpleDateFormat(pattern);
					dateFormatMap.put(pattern, formatter);
				}
			}
			try {
				return convertTo(formatter.parse(dateString));
			} catch (ParseException pe) {
				return null;
			}
		} else {
			return null;
		}
	}
	
	public static int parseMonth(String dateString) {
		try {
			Date date = parse(dateString, "month");
			Calendar cal = Calendar.getInstance();
			cal.setTimeInMillis(date.getTime());
			return cal.get(Calendar.MONTH);
		}catch(Exception e) {
			return -1;
		}
		
		
	}

	public static String format(long timemillis) {
		return format(new Date(timemillis), "date");
	}
	
	public static String formatTimestamp(long timemillis,String pattern) {
		return formatTimestamp(new Timestamp(timemillis), pattern);
	}
	
	public static String formatTimestamp(Timestamp timestamp,String pattern) {
		if (timestamp != null) {
			DateFormat formatter = null;
			synchronized (dateFormatMap) {
				formatter = (DateFormat) dateFormatMap.get(pattern);
				if (formatter == null) {
					formatter = new SimpleDateFormat(pattern);
					dateFormatMap.put(pattern, formatter);
				}
			}
			return formatter.format(timestamp);
		} else {
			return "";
		}
	}

	public static String format(long timemillis, String pattern) {
		return format(new Date(timemillis), pattern);
	}

	public static String format(Date date) {
		return format(date, "date");
	}

	public static String format(Date date, String pattern) {
		if (date != null) {
			DateFormat formatter = null;
			synchronized (dateFormatMap) {
				formatter = (DateFormat) dateFormatMap.get(pattern);
				if (formatter == null) {
					formatter = new SimpleDateFormat(pattern);
					dateFormatMap.put(pattern, formatter);
				}
			}
			return formatter.format(date);
		} else {
			return "";
		}
	}

	public static Date rollDate(int num) {
		return rollDate(getToday(), num);
	}

	public static Date rollDate(Date date, int num) {
		return roll(Calendar.DATE, date, num);
	}

	public static Date rollHour(int num) {
		return rollHour(getToday(), num);
	}

	public static Date rollHour(Date date, int num) {
		return roll(Calendar.HOUR, date, num);
	}

	public static Date rollMinute(int num) {
		return rollMinute(getToday(), num);
	}

	public static Date rollMinute(Date date, int num) {
		return roll(Calendar.MINUTE, date, num);
	}

	public static Date roll(int type, Date date, int num) {
		long millsec = 0;
		switch (type) {
		case Calendar.MINUTE:
			millsec = 60000;
			break;
		case Calendar.HOUR:
			millsec = 3600000;
			break;
		case Calendar.DATE:
			millsec = 86400000;
			break;
		}
		return new Date(date.getTime() + num * millsec);
	}

	public static Date getDate(int year, int month, int day, int hour, int minute, int second, int milli, boolean max) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		if (month == -1) {
			if (max)
				month = cal.getActualMaximum(Calendar.MONTH);
			else
				month = cal.getActualMinimum(Calendar.MONTH);
		}
		cal.set(Calendar.MONTH, month);
		if (day == -1) {
			if (max)
				day = cal.getActualMaximum(Calendar.DATE);
			else
				day = cal.getActualMinimum(Calendar.DATE);
		}
		cal.set(Calendar.DATE, day);
		if (hour == -1) {
			if (max)
				hour = cal.getActualMaximum(Calendar.HOUR_OF_DAY);
			else
				hour = cal.getActualMinimum(Calendar.HOUR_OF_DAY);
		}
		cal.set(Calendar.HOUR_OF_DAY, hour);
		if (minute == -1) {
			if (max)
				minute = cal.getActualMaximum(Calendar.MINUTE);
			else
				minute = cal.getActualMinimum(Calendar.MINUTE);
		}
		cal.set(Calendar.MINUTE, minute);
		if (second == -1) {
			if (max)
				second = cal.getActualMaximum(Calendar.SECOND);
			else
				second = cal.getActualMinimum(Calendar.SECOND);
		}
		cal.set(Calendar.SECOND, second);
		if (milli == -1) {
			if (max)
				milli = cal.getActualMaximum(Calendar.MILLISECOND);
			else
				milli = cal.getActualMinimum(Calendar.MILLISECOND);
		}
		cal.set(Calendar.MILLISECOND, milli);
		return convertTo(cal.getTime());
	}

	public static Date getDate(int year, int month, int day, int hour, int minute, int second, boolean max) {
		return getDate(year, month, day, hour, minute, second, -1, max);
	}

	public static Date getDate(int year, int month, int day, int hour, int minute, boolean max) {
		return getDate(year, month, day, hour, minute, -1, max);
	}

	public static Date getDate(int year, int month, int day, int hour, boolean max) {
		return getDate(year, month, day, hour, -1, max);
	}

	public static Date getDate(int year, int month, int day, boolean max) {
		return getDate(year, month, day, -1, max);
	}

	public static Date getDate(int year, int month, boolean max) {
		return getDate(year, month, -1, max);
	}

	public static Date getDate(int year, boolean max) {
		return getDate(year, -1, max);
	}

	public static Date getMaxDate(int year, int month, int day, int hour, int minute, int second) {
		return getDate(year, month, day, hour, minute, second, true);
	}

	public static Date getMaxDate(int year, int month, int day, int hour, int minute) {
		return getDate(year, month, day, hour, minute, true);
	}

	public static Date getMaxDate(int year, int month, int day, int hour) {
		return getDate(year, month, day, hour, true);
	}

	public static Date getMaxDate(int year, int month, int day) {
		return getDate(year, month, day, true);
	}

	public static Date getMaxDate(int year, int month) {
		return getDate(year, month, true);
	}

	public static Date getMaxDate(int year) {
		return getDate(year, true);
	}

	public static Date getMinDate(int year, int month, int day, int hour, int minute, int second) {
		return getDate(year, month, day, hour, minute, second, false);
	}

	public static Date getMinDate(int year, int month, int day, int hour, int minute) {
		return getDate(year, month, day, hour, minute, false);
	}

	public static Date getMinDate(int year, int month, int day, int hour) {
		return getDate(year, month, day, hour, false);
	}

	public static Date getMinDate(int year, int month, int day) {
		return getDate(year, month, day, false);
	}

	public static Date getMinDate(int year, int month) {
		return getDate(year, month, false);
	}

	public static Date getMinDate(int year) {
		return getDate(year, false);
	}

	public static Date getMinDate(int type, Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		switch (type) {
		case Calendar.MONTH:
			cal.set(Calendar.MONTH, cal.getActualMinimum(Calendar.MONTH));
		case Calendar.DATE:
			cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DATE));
		case Calendar.HOUR:
			cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
		case Calendar.MINUTE:
			cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
		case Calendar.SECOND:
			cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
			cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));
		default:
			break;
		}
		return convertTo(cal.getTime());
	}
	
	public static Date getMaxDate(int type, Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		switch (type) {
		case Calendar.MONTH:
			cal.set(Calendar.MONTH, cal.getActualMaximum(Calendar.MONTH));
		case Calendar.DATE:
			cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
		case Calendar.HOUR:
			cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
		case Calendar.MINUTE:
			cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
		case Calendar.SECOND:
			cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
			cal.set(Calendar.MILLISECOND, cal.getActualMaximum(Calendar.MILLISECOND));
		default:
			break;
		}
		return convertTo(cal.getTime());
	}
	
	public static String getMinDateThisMonth() {
		return getMinDate(Calendar.DATE,getToday()).toString();
	}
	
	public static Date getMinDateThisMonthDate() {
		return getMinDate(Calendar.DATE,getToday());
	}
	
	public static String getMaxDateThisMonth() {
		return getMaxDate(Calendar.DATE,getToday()).toString();
	}
	
	public static Date getMaxDateThisMonthDate() {
		return getMaxDate(Calendar.DATE,getToday());
	}

	public static Date getMinDate(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
		cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
		cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
		cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));
		return convertTo(cal.getTime());
	}

	public static Date getMaxDate(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
		cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
		cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
		cal.set(Calendar.MILLISECOND, cal.getActualMaximum(Calendar.MILLISECOND));
		return convertTo(cal.getTime());
	}
	
	/**
     * 根据当月,得到开始一天和最后一天.
     * 
     * @param monthStr the month str
     * 
     * @return the start and end day this month
     */
    public static StartEndDayMonth getStartAndEndDayThisMonth(String year,String month) {
    	String yearMonthStr = year + "-" + month;
    	return getStartAndEndDayThisMonth(yearMonthStr);
    }
    
    public static Date getStartDayThisYear(String year) {
        String dateStr = year + "-1-1";
        
        return parse(dateStr);
    }
	
	/**
     * 根据当月,得到开始一天和最后一天.
     * 
     * @param monthStr the month str
     * 
     * @return the start and end day this month
     */
    public static StartEndDayMonth getStartAndEndDayThisMonth(String yearMonthStr) {
        Date[] result = new Date[2];
        Calendar calendar = Calendar.getInstance();
        yearMonthStr = yearMonthStr + "-1";

        calendar.setTime(convertTo(parse(yearMonthStr)));

        calendar.set(Calendar.DATE, 1);
        java.util.Date start = calendar.getTime();
        result[0] = convertTo(start);
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        java.util.Date end = calendar.getTime();
        result[1] = convertTo(end);
        StartEndDayMonth sed = new StartEndDayMonth();
        sed.setFirstDay(result[0]);
        sed.setEndDay(result[1]);
        return sed;
    }
    
    public static QuaterDateOfYear getQuaterDay(String year) {
    	QuaterDateOfYear result = new QuaterDateOfYear();
    	String month = year + "-" + "01";
    	result.setQ1FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
    	month = year + "-" + "03";
    	result.setQ1EndDay(getStartAndEndDayThisMonth(month).getEndDay());
    	month = year + "-" + "04";
    	result.setQ2FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
    	month = year + "-" + "06";
    	result.setQ2EndDay(getStartAndEndDayThisMonth(month).getEndDay());
    	month = year + "-" + "07";
    	result.setQ3FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
    	month = year + "-" + "09";
    	result.setQ3EndDay(getStartAndEndDayThisMonth(month).getEndDay());
    	month = year + "-" + "10";
    	result.setQ4FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
    	month = year + "-" + "12";
    	result.setQ4EndDay(getStartAndEndDayThisMonth(month).getEndDay());
    	return result;
    }
	
	public static void main(String args[]) {
		//System.out.println(parse("20.11-2007","dd.MM.yyyy" ));
		//System.out.println(getMaxDateThisMonth());
		//System.out.println(parseMonth("2007-07"));

		//Calendar.AUGUST
		
		
	}
	
	
	
	
	
	
	
	

}

⌨️ 快捷键说明

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