時間工具類-月份第一天 最後一天等等時間工具欄

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

public class DateUtil {
	/**
	 * @desc  取當前時間
	 * @param modle:yyyyMM;yyyyMMdd;yyyy-MM-dd HH:mm:ss;"yyyy-MM-dd HH:mm:ss,SSS"
	 * @return date
	 */
	public static String getCurrentDate(String model) {
		String date = "";
		try {
			Date dt = new Date();
			SimpleDateFormat formatter = new SimpleDateFormat(model);
			formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 
			date = formatter.format(dt);
		} catch (Exception ex) {
			date = "";
		}
		return date;
	}
	
	/**
	 *@ title:格式化時間爲字符串
	 *@ Description: 格式化時間爲字符串
	 *@ param: date 日期,formatter 格式化
	 *@ return String
	 *@ throw Exception
	 *@ author:王宇雷
	 *@ date:2016-1-10
	 *@ modify Description 修改內容描述
	 *@ modify man:修改人
	 *@ modify date:修改時間(yyyy-MM-dd)
	 */
	public static String getDateToString(Date date,String formatter) {
		try {
			SimpleDateFormat format = new SimpleDateFormat(formatter);
			format.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
			return format.format(date);
		} catch (Exception ex) {
			LogUtil.error(ex);
		}
		return null;
	}

	/**
	 * @title getDateOfMonthNums:獲取指定日期,在指定的月數以前的日期. <br/>
	 * @Description:描述
	 * @param: param
	 * @return: 
	 * @throw: 
	 * @author:wangyl
	 * @date:2016-2-23下午4:00:13
	 * @modify Description: 修改內容描述
	 * @modify man:修改人
	 * @modify date:修改時間(yyyy-MM-dd)
	 */
	public static String getBeforeDateOfMonthNums(Date date, String formatter,int months) {
		try {
			// 以前日期
			Date beforeDate = null;
			// 獲得日曆
			Calendar calendar = Calendar.getInstance(); 
			// 把date時間賦給日曆
			calendar.setTime(date);
			// 設置爲前3月
			calendar.add(calendar.MONTH, -months); 
			// 獲得前3月的時間
			beforeDate = calendar.getTime(); 
			//格式化
			SimpleDateFormat sdf=new SimpleDateFormat(formatter); 
			//返回格式化前3月的時間
			return sdf.format(beforeDate); 
			
		} catch (Exception ex) {
			LogUtil.error(ex);
		}
		return null;
	}
	
	/**
	 *@ title:格式化字符串爲時間
	 *@ Description: 格式化字符串爲時間
	 *@ param: date 日期,model 格式:yyyy/MM/dd等
	 *@ return java.sql.Date
	 *@ throw Exception
	 *@ author:wanghr
	 *@ date:2016-4-15
	 *@ modify Description 修改內容描述
	 *@ modify man:修改人
	 *@ modify date:修改時間(yyyy-MM-dd)
	 */
	public static java.sql.Date getDateFromString(String date,String model){
		long long_date = 0;
		java.sql.Date sql_date = null;
		try {
			long_date = new SimpleDateFormat(model).parse(date).getTime();
			sql_date = new java.sql.Date(long_date);
			return sql_date;
		} catch (ParseException e) {
			LogUtil.error(e);
		}
		return null;
	} 
	/**
	 *@ title:獲取當前月的初一時間
	 *@ Description: 獲取當前月的初一時間
	 *@ param: 
	 *@ return 
	 *@ throw Exception:
	 *@ author:wanghr
	 *@ date:2016-4-25
	 *@ modify Description 修改內容描述
	 *@ modify man:修改人
	 *@ modify date:修改時間(yyyy-MM-dd)
	 */
	public static String getMonthEarly(){
		String array[] = DateUtil.getCurrentDate("yyyy-MM-dd").split("-");
		String monthEarly = array[0]+"-"+array[1]+"-"+"01";
		return monthEarly;
	}
	
	/**
	 * 
	 * <p>獲取指定日期的最大日期<p>
	 * @param dateStr
	 * @param formatter
	 * @return
	 * @author 
	 */
	public static Date getMaxDateOfMonth(String dateStr,String formatter) {
		SimpleDateFormat sdf = new SimpleDateFormat(formatter);
		try {
			Date date = sdf.parse(dateStr);
			Calendar c = Calendar.getInstance();
			if (date != null) {
				c.setTime(date);
			} else {
				c.setTime(new Date());
			}
			
			//獲取年
			int year = c.get(Calendar.YEAR);
			// 獲取月
			int month = c.get(Calendar.MONTH) + 1;
			// 返回天數
			int days = getDays(year,month);
			
			Calendar newC = Calendar.getInstance();
			newC.set(year, month - 1, days);
			return newC.getTime();
		} catch (ParseException e) {
			
			e.printStackTrace();
			
		}
		return null;
		
	}
	
	/**
	 * 是否閏年
	 * 
	 * @param year
	 * @return
	 */
	public static boolean isLeap(int year) {
		return (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0));
	}
	
	/**
	 * 返回一個月的天數
	 * 
	 * @param year
	 * @param month
	 * @return
	 */
	public static int getDays(int year, int month) {
		return (month == 2) ? (isLeap(year) ? 29 : 28)
				: ((((month < 7) && (month % 2 == 0)) || ((month > 8) && (month % 2 == 1))) ? 30 : 31);
	}
	
	/**
	 * 獲取當前日期的前或者後的日期 
	 * @param flag
	 * @return
	 * 若是flag= -1 表示前一天,flag = 1表示後一天 ,flag= 0表示的是當天
	 */
	public static String getYesterday(int flag){
		String str = "";
		try {
			Calendar calendar = Calendar.getInstance();
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
			//calendar.setTime(df.parse(date));
			calendar.add(Calendar.DATE, flag);
			str = df.format(calendar.getTime());
			System.out.println(calendar);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(str);
		return str;
	}
	
	
	public static String getfirstDayMonth(){
		 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
		 //獲取前月的第一天
		 	Calendar cale = null;  
	        cale = Calendar.getInstance();  //獲取當前日期 
	        cale.add(Calendar.MONTH, 0);  
	        cale.set(Calendar.DAY_OF_MONTH, 1);  //設置爲1號,當前日期既爲本月第一天 
	       String firstDay = format.format(cale.getTime());  
	       return firstDay;
	}
	
	public static String getlastDayMonth(){
		 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
		 //獲取前月的最後
		 Calendar cale = null;  
	        cale = Calendar.getInstance();  //獲取當前日期 
		 	cale = Calendar.getInstance();  
	        cale.add(Calendar.MONTH, 1);  
	        cale.set(Calendar.DAY_OF_MONTH, 0);  
	        String   lastDay = format.format(cale.getTime()); 
	       return lastDay;
	}
	
	/**
	 * 根據給的月份(2016-08)獲取第一個月
	 * @param month
	 * @return
	 */
	public static String getFirstMonth(String month) {
		if(StringUtil.isEmpty(month)) {
			return getCurrentDate("yyyy") + "-01";
		} else {
			return month.substring(0, 4) + "-01";
		}
	}
	public static String getCurrentDate(String model,int flag){
		String str = "";
		try {
			Calendar calendar = Calendar.getInstance();
			SimpleDateFormat df = new SimpleDateFormat(model);
			df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 
			//calendar.setTime(df.parse(date));
			calendar.add(Calendar.DATE, flag);
			str = df.format(calendar.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return str;
	}
	//判斷當前日期是否在指定時間以前
	public static boolean before(String time){
		boolean retValue=false;
		Timestamp x = Timestamp.valueOf(DateUtil.getCurrentDate("yyyy-MM-dd",0)+" "+time);
		retValue = new Timestamp(System.currentTimeMillis()).before(x);
		return retValue;
	}
	//判斷當前日期是否在指定時間以後
	public static boolean after(String time){
		boolean retValue=false;
		Timestamp x = Timestamp.valueOf(DateUtil.getCurrentDate("yyyy-MM-dd",0)+" "+time);
		retValue = new Timestamp(System.currentTimeMillis()).after(x);
		return retValue;
	}	
	//計算兩個日期之間相差月份
	public static int diffMonthdates(String startDate, String endDate, String model) {
        int result = 0;
        try{
	        SimpleDateFormat df=new SimpleDateFormat(model);
	        Date d0=df.parse(startDate);
	        Date d1=df.parse(endDate);
	        result = (d1.getYear() - d0.getYear()) * 12 + d1.getMonth() - d0.getMonth();
        }catch(Exception ex){
        	ex.printStackTrace();
        }
        return result;
    }
	/**
	 * 根據傳入時間字符串得到須要格式的三種加減時間串
	 * @param strDate	時間字符串
	 * @param model		格式
	 * @param temp		加減項
	 * @param i			加減量
	 * @return
	 */
   public static String getDateByStrNum(String strDate,String model,int temp,int i) {   
       SimpleDateFormat formatter = new SimpleDateFormat(model);   
       ParsePosition pos = new ParsePosition(0);   
       Date strtodate = formatter.parse(strDate, pos);
       Calendar cal = Calendar.getInstance();
       cal.setTime(strtodate);
       cal.add(temp, i);
       return formatter.format(cal.getTime());   
   }
   
	/**
	 * 得到兩個日期之間的全部月份
	 * @param minDate
	 * @param maxDate
	 * @return
	 */
	public static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException{
		List<String> result = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化爲年月
		Calendar min = Calendar.getInstance();
		Calendar max = Calendar.getInstance();
		min.setTime(sdf.parse(minDate));
		min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
		max.setTime(sdf.parse(maxDate));
		max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
		Calendar curr = min;
		while (curr.before(max)) {
		 result.add(sdf.format(curr.getTime()));
		 curr.add(Calendar.MONTH, 1);
		}
		return result;
	}
	
	public static String toFormatterStr(String dateStr) {
		String formatter = "yyyy年MM月";
		Date date = parseToDate(dateStr, "yyyy-MM");
		return getDateToString(date, formatter);
	}
	public static String toFormatterStr(String formatter, String dateStr) {
		if (StringUtil.isEmpty(formatter)) {
			formatter = "yyyy年MM月dd日";
		}
		Date date = parseToDate(dateStr, "yyyy-MM-dd");
		return getDateToString(date, formatter);
	}
	/**
	 * 將長時間格式字符串轉換爲時間 yyyy-MM-dd HH:mm:ss
	 * 
	 * @param strDate
	 * @return
	 */
	public static Date parseToDate(String strDate, String formatter) {
		SimpleDateFormat f = new SimpleDateFormat(formatter);
		ParsePosition pos = new ParsePosition(0);
		Date strtodate = f.parse(strDate, pos);
		return strtodate;
	}
	
	
	public static void main(String[] args) {
		//System.out.println(getFirstMonth("2018-09"));
		//System.out.println(getMonthBetween("2016-12-21","2016-12-28"));
		//System.out.println(""+getDateToString(getMaxDateOfMonth("2016-12","yyyy-MM"),"yyyy-MM-dd"));
	}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;





public class WeekUtils {

        
        public static void main(String[] args) {  
        	
           WeekUtils cd = new WeekUtils();  
           /*   System.out.println("開始時間: " + cd.getStartDayOfWeekNo(2017,9) );  
            System.out.println("結束時間:" + cd.getEndDayOfWeekNo(2017,9) );    
            System.out.println(DateUtil.getCurrentDate("yyyy-MM"));*/
          /* String month="2017-03";
          System.out.println(cd.getMonthfirstDate(month));    
          System.out.println(cd.getMonthlastDate(month)); */ 
        } 
      /**
       * 根據給定的月份獲取本月第一天
       * @param month
       * @return
       */
        
        public String getMonthfirstDate(String month){
        	String firstDate=month+"-01";
        	try {
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
				SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
				Date someDate=sdf.parse(month);
				Calendar   ca   =   Calendar.getInstance();
				ca.setTime(someDate);                            //  someDate 爲你要獲取的那個月的時間
				ca.set(Calendar.DAY_OF_MONTH,   1);
				//第一天
				Date   firstDate1  = ca.getTime();
				 firstDate=sdf1.format(firstDate1);
				return firstDate;
        	} catch (ParseException e) {
				e.printStackTrace();
			}
			return firstDate;
        }
        /**
         *  根據給定的月份獲取本月最後1天
         * @param month
         * @return
         */
        public String getMonthlastDate(String month){
        	String lastDate=month+"-30";
        	try {
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
				SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
				Date someDate=sdf.parse(month);
				Calendar   ca   =   Calendar.getInstance();
				ca.setTime(someDate);                            //  someDate 爲你要獲取的那個月的時間
				ca.add(Calendar.MONTH, 1);
				ca.add(Calendar.DAY_OF_MONTH, -1);
				//最後一天
				Date   lastDate1   =   ca.getTime();
				 lastDate=sdf1.format(lastDate1);
				return lastDate;
			} catch (ParseException e) {
				e.printStackTrace();
			}
        	return lastDate;
        }
        
          
        /** 
         * get first date of given month and year 
         * @param year 
         * @param month 
         * @return 本月第一天
         */  
        public String getFirstDayOfMonth(int year,int month){  
            String monthStr = month < 10 ? "0" + month : String.valueOf(month);  
            return year + "-"+monthStr+"-" +"01";  
        }  
          
        /** 
         * get the last date of given month and year 
         * @param year 
         * @param month 
         * @return 本月最後一天
         */  
        public String getLastDayOfMonth(int year,int month){  
            Calendar calendar = Calendar.getInstance();  
            calendar.set(Calendar.YEAR , year);  
            calendar.set(Calendar.MONTH , month - 1);  
            calendar.set(Calendar.DATE , 1);  
            calendar.add(Calendar.MONTH, 1);  
            calendar.add(Calendar.DAY_OF_YEAR , -1);  
            return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" +  
                   calendar.get(Calendar.DAY_OF_MONTH);  
        }  
          
        /** 
         * get Calendar of given year 
         * @param year 
         * @return 
         */  
        private Calendar getCalendarFormYear(int year){  
            Calendar cal = Calendar.getInstance();  
            cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);        
            cal.set(Calendar.YEAR, year);  
            return cal;  
        }  
          
        /** 週一
         * get start date of given week no of a year 
         * @param year 
         * @param weekNo 
         * @return 
         * @throws Exception 
         */  
        public String getStartDayOfWeekNo(int year,int weekNo) { 
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
          String strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH);  
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date;
            String date1="";
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }  
        /**
         * 週二
         * @param year
         * @param weekNo
         * @return
         */
        public String getTuesdayOfWeekNo(int year,int weekNo){  
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
            cal.add(Calendar.DAY_OF_WEEK, 1);  
            String strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH); 
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String date1="";
            Date date;
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }
        /**
         * 週三
         * @param year
         * @param weekNo
         * @return
         */
        public String getWednesdayOfWeekNo(int year,int weekNo){  
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
            cal.add(Calendar.DAY_OF_WEEK, 2);  
          String  strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH);  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String date1="";
            Date date;
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }
        /**
         * 週四
         * @param year
         * @param weekNo
         * @return
         */
        public String getThursdayOfWeekNo(int year,int weekNo){  
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
            cal.add(Calendar.DAY_OF_WEEK, 3);  
            String strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH);      
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String date1="";
            Date date;
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }
        /**
         * 週五
         * @param year
         * @param weekNo
         * @return
         */
        public String getFridayOfWeekNo(int year,int weekNo){  
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
            cal.add(Calendar.DAY_OF_WEEK, 4);  
            String strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH);      
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String date1="";
            Date date;
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }
        /** 
         * get the end day of given week no of a year. 
         * @param year 
         * @param weekNo 
         * @return 週末
         */  
        public String getEndDayOfWeekNo(int year,int weekNo){  
            Calendar cal = getCalendarFormYear(year);  
            cal.set(Calendar.WEEK_OF_YEAR, weekNo);  
            cal.add(Calendar.DAY_OF_WEEK, 6);  
            String strDate= cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +  
                   cal.get(Calendar.DAY_OF_MONTH);  
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String date1="";
            Date date;
			try {
				date = sdf.parse(strDate);
				 date1=sdf.format(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}
            return date1;
        }  
        
        
        
        
        
    }
相關文章
相關標籤/搜索