datetimetool.java

来自「基于Sturts+Spring+Hibernate的一个高级销售管理系统。内容丰」· Java 代码 · 共 724 行 · 第 1/2 页

JAVA
724
字号
package com.yuanchung.sales.util;

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

import com.yuanchung.sales.exception.DateFormatException;

/**
 * <p>
 * Title:
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Copyright: Copyright (c) 2006
 * </p>
 * <p>
 * Company:
 * </p>
 * 
 * @author not attributable
 * @version 1.0
 */
@SuppressWarnings("unchecked")//剔除未检查的警告;
public class DateTimeTool {

	public static void main(String[] args) throws ParseException {
		String str = "12345";
		System.out.println(str.substring(0, 5));
		//System.out.println(DateTimeTool
				//.getCurrentDate("yyyy-MM-dd_HH-mm-ss"));
		//System.out.println(compare("2008-01-01 02-01-01", "2008-01-01 03-01-02"));
//		System.out.println(getMaxDate(new Date(), "2009-01-01 02-01-01"));
	}

	public DateTimeTool() {
	}

	
	/**
	 * ��ȡ���������
	 * 
	 * @return
	 */
	public static Date getYesterday() {
		Date date = new Date();
		return new Date(date.getTime() - 1000 * 60 * 60 * 24);
	}

	/**
	 * ��ȡһ��֮ǰ����
	 * 
	 * @param format
	 * @return
	 */
	public static String getOneWeekAgoStr(String format) {
		long current = new java.util.Date().getTime();
		long aweek = 7 * 24 * 60 * 60 * 1000;
		long oneweekago = current - aweek;
		return new SimpleDateFormat(format).format(new java.util.Date(
				oneweekago));
	}

	/**
	 * ��ȡ3��֮ǰ����
	 * 
	 * @param format
	 * @return
	 */
	public static String getThreeDayAgoStr(String format) {
		long current = new java.util.Date().getTime();
		long threeday = 3 * 24 * 60 * 60 * 1000;
		long threedayago = current - threeday;
		return new SimpleDateFormat(format).format(new java.util.Date(
				threedayago));
	}

	/**
	 * ��ȡ����֮ǰ����
	 * 
	 * @param format
	 * @return
	 */
	public static String getGivenDayAgoStr(int beforeDays, String format) {
		Calendar c = Calendar.getInstance(); // ��ʱ�����ں�ʱ��
		int d = c.get(Calendar.DAY_OF_MONTH); // ȡ���ա���
		int d2 = d - beforeDays;
		c.set(Calendar.DAY_OF_MONTH, d2); // �����ա������û�ȥ
		//
		// long current = new java.util.Date().getTime();
		// long beforetimes = beforeDays * 24 * 60 * 60 * 1000;
		// long times = current - beforetimes;
		return new SimpleDateFormat(format).format(c.getTime());
	}

	/**
	 * ȡ��ǰ����
	 * 
	 * @param format
	 * @return
	 */
	public static String getCurrentDate(String format) {
		return new SimpleDateFormat(format).format(new Date());
	}
	public static boolean lastDayOfYear(Integer year,Integer dayOfYear) {
		boolean flag = false;
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);
		c.add(Calendar.YEAR, 1);
		c.set(Calendar.DAY_OF_YEAR, 1);
		c.set(Calendar.DATE, c.get(Calendar.DAY_OF_YEAR)-1);
		if(cal.equals(c)) {
			flag = true;
		}
		return flag;
	}
	/**
	 * @author 陆文邦
	 * @function 判断该天是否为该年的第一天;
	 * @param year
	 * @param dayOfYear
	 * @return
	 * @time 2008-12-15
	 */
	public static boolean firstDayOfYear(Integer year,Integer dayOfYear) {
		boolean flag = false;
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);
		c.set(Calendar.DAY_OF_YEAR, 1);
		if(cal.equals(c)) {
			flag = true;
		}
		return flag;
	}
	/**
	 * @author 陆文邦
	 * @function 获取该天为周几;
	 * @param year
	 * @param dayOfYear
	 * @return 返回星期几;
	 */
	public static int getWeekNoByDayOfYear(Integer year,Integer dayOfYear) {
		Integer weekNO = null;
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
		weekNO = cal.get(Calendar.DAY_OF_WEEK);
		return weekNO;
	}
	/**
	 * @author 陆文邦
	 * @param year
	 * @return 获取该年度能够的日期;
	 */
	public static int getWeekCountOfYear(Integer year) {
		Integer weekCount = null;
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, Calendar.DECEMBER);
		cal.set(Calendar.DATE,31);
		weekCount = cal.get(Calendar.WEEK_OF_YEAR);
		if(weekCount==1){
			weekCount = 52;
		}
		return weekCount;
	}
	/**
	 * @author 陆文邦;
	 * 获取本周周日的日期;
	 * @param format
	 * @return 字符串;
	 */
	public static String getFirstDateByWeek(int yearInt,int monthInt,int weekOfYear) {
		Calendar cal = Calendar.getInstance();//定义日历;
		if(monthInt==11&&weekOfYear==1) {
			cal.set(Calendar.YEAR, yearInt);//设置年份时间,年最后一周的处理+1;
			cal.set(Calendar.MONTH, monthInt);//设置月份时间;
			cal.set(Calendar.WEEK_OF_YEAR, getWeekCountOfYear(yearInt)+1);//设置日历时间;
			cal.set(Calendar.DAY_OF_WEEK, 1);
		} else {
			cal.set(Calendar.YEAR, yearInt);//设置年份时间;
			cal.set(Calendar.MONTH, monthInt);//设置月份时间;
			cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//设置日历时间;
			cal.set(Calendar.DAY_OF_WEEK, 1);
		}
		Date date = cal.getTime();//获取本周第一天的时间;
		return new SimpleDateFormat("yyyy-MM-dd").format(date);
	}
	/**
	 * @author 陆文邦;
	 * @function 根据传的日期获取未来7天的日期数量;
	 * @param date
	 * @return list
	 */
	public static List getDateNos(String firstDate) throws DateFormatException{
		List bigList = new ArrayList();
		Date date = buildDate(firstDate);
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		for (int i = 0; i < 7; i++) {
			List<String> singleList = new ArrayList<String>();
			String dateNo = new SimpleDateFormat("dd").format(cal.getTime());//获取日期;
			singleList.add(dateNo);
			String monthNo = String.valueOf(Integer.parseInt(new SimpleDateFormat("MM").format(cal.getTime()))-1);//获取月份;
			singleList.add(monthNo);
			String yearNo = new SimpleDateFormat("yyyy").format(cal.getTime());//获取年份;
			singleList.add(yearNo);
			String weekOfYear = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));//年之周;
			singleList.add(weekOfYear);
			String dayOfYear = String.valueOf(cal.get(Calendar.DAY_OF_YEAR));//年之日;
			singleList.add(dayOfYear);
			bigList.add(singleList);
			cal.add(Calendar.DATE, 1);//前进一天;
		}
		return bigList;
	}
	/**
	 * @author 陆文邦;
	 * 获取本周周六的日期;
	 * @param format
	 * @return 字符串;
	 */
	public static String getLastDateByWeek(int yearInt,int monthInt,int weekOfYear) {
		Calendar cal = Calendar.getInstance();//定义日历;
		if(monthInt==11&&weekOfYear==1) {
			cal.set(Calendar.YEAR, yearInt+1);//设置年份时间;
			cal.set(Calendar.MONTH, 0);//设置月份时间;
			cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//设置日历时间,年当中的第一周;
			cal.set(Calendar.DAY_OF_WEEK, 7);
		} else {
			cal.set(Calendar.YEAR, yearInt);//设置年份时间;
			cal.set(Calendar.MONTH, monthInt);//设置月份时间;
			cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//设置日历时间;
			cal.set(Calendar.DAY_OF_WEEK, 7);
		}
		Date date = cal.getTime();//获取本周第一天的时间;
		return new SimpleDateFormat("yyyy-MM-dd").format(date);
	}
	/**
	 * @author 陆文邦;
	 * 获取明天的日期;
	 * @param format
	 * @return
	 */
	public static String getTomorrowDate(String format,Integer mount) {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DATE, mount);
		Date date = c.getTime();
		return new SimpleDateFormat(format).format(date);
	}
	/**
	 * @author 陆文邦;
	 * 获取当前月第一天;
	 * @param format
	 * @return
	 */
	public static String getMonthFirstDay(String format) {
		Calendar c = Calendar.getInstance();
		c.set(Calendar.DATE, 1);//把日期设置为当月第一天 
		Date date = c.getTime();
		return new SimpleDateFormat(format).format(date);
	}
	/**
	 * @author 陆文邦;
	 * 获取当前月最后一天;
	 * @param format
	 * @return
	 * 思路:该月最后一天的号数就是当月的天数;
	 */
	public static String getMonthLastDay(String format) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);//把月份设置成下个月
		cal.set(Calendar.DAY_OF_MONTH, 1);//把日期设置成一号;
		cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 1);//下个月一号减去一天就是上个月的最后一天,然后把日期设置进去;
		Date date = cal.getTime();
		return new SimpleDateFormat(format).format(date);
	}
	/**
	 * @author 陆文邦;
	 * 获取当月的最后一天是星期几;
	 * @param cal
	 * @return
	 */
	public static int getLastDateByWeek(Calendar cal) {
		Calendar c = (Calendar) cal.clone();
		c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);//把月份设置成下个月
		c.set(Calendar.DAY_OF_MONTH, 1);//把日期设置成一号;
		c.set(Calendar.DATE, c.get(Calendar.DATE) - 1);//下个月一号减去一天就是上个月的最后一天,然后把日期设置进去;
		int weekNo = c.get(Calendar.DAY_OF_WEEK);
		return weekNo;
	}
	/**
	 * @author 陆文邦;
	 * 获取当月的第一天是星期几;
	 * @param cal
	 * @return
	 */
	public static int getFirstDateByWeek(Calendar cal) {
		Calendar c = (Calendar) cal.clone();
		c.set(Calendar.DATE, 1);
		int weekNo = c.get(Calendar.DAY_OF_WEEK);
		return weekNo;
	}
	/**
	 * @author 陆文邦;
	 * @param c 日历参数,
	 * @param weekNum 周几
	 * @return int 第几次;
	 */
	public static int selectNumDate(Calendar c,Integer weekNum) {
		int count = 0;
		Calendar ccc = (Calendar) c.clone(); //参数前现实的日期;
		Date date = ccc.getTime();
		Calendar cal = (Calendar) c.clone(); 
		int dateNum = getLastDate(cal);
		cal.set(Calendar.DAY_OF_MONTH, 1);//把日期设置成一号;
		for(int i=0;i<dateNum;i++) {
			int tempWeekNum = cal.get(Calendar.WEEK_OF_MONTH);
			if(tempWeekNum==weekNum){
				count++;
				if(date.equals(cal.getTime())){
					count++;
					return count;
				}
			}
			cal.add(Calendar.DAY_OF_MONTH, 1);
		}
		return 0;
	}
	/**
	 * @author 陆文邦;
	 * 获取当前月最后一天;
	 * @param cal
	 * @return
	 * 思路:该月最后一天的号数就是当月的天数;
	 */
	public static int getLastDate(Calendar c) {
		Calendar cal = (Calendar) c.clone();
		cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);//把月份设置成下个月
		cal.set(Calendar.DAY_OF_MONTH, 1);//把日期设置成一号;
		cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 1);//下个月一号减去一天就是上个月的最后一天,然后把日期设置进去;
		int DayNo = cal.get(Calendar.DATE);
		return DayNo;
	}

	/**
	 * @author 陆文邦
	 * @functiuon 
	 * @param year
	 * @param dayOfYear

⌨️ 快捷键说明

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