package com.yuncai.core.tools;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DateTools {
	
public final static String[] week = { "", "周日", "周一", "周二", "周三", "周四", "周五", "周六" };
	
	public final static String[] week2 = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
	public static java.text.SimpleDateFormat SDF_YYMMDD = new java.text.SimpleDateFormat("yyyy-MM-dd");
	public static java.text.SimpleDateFormat SDF_YYYY_MM_DD_HH_MM_SS = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	public static Date StringToDate(String dateString, String format) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static String StringToDate_YYYY_MM_DD(Date date) {
		String dates = "";
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			dates = sdf.format(date);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return dates;
	}
	
	public static String StringToDate_MM_DD(Date date) {
		String dates = "";
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
			dates = sdf.format(date);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return dates;
	}
	public static Date StringToDate(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	
	public static Date StringtoDateHHMM(String dateString){
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date StringToDatetpy(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
			date = sdf.parse(dateString);
			System.out.println(date);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date StringToDate_YYYY_MM_DD_HH_MM(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date StringToDate_YYYYMMDDHHMM(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date StringToDate_YY_MM_DD_HH_MM(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date StringToDate_YYYY_MM_DD_HH_MM_SS(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static Date stringToDate(String dateString, String format) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static String dateToString(Date date, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}
	public static Date StringToDateShort(String dateString) {
		Date date;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			date = sdf.parse(dateString);
		} catch (Exception e) {
			date = null;
			LogUtil.out(e);
		}
		return date;
	}
	public static String dateToString(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}
	public static String getByTimeMillis(long timeMillis) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(timeMillis);
		return dateToString(c.getTime());
	}
	public static long getTimeMillis(String dateTime) {
		if (dateTime == null || dateTime.equals("")) {
			return 0l;
		}
		Date date = DateTools.StringToDate(dateTime);
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.getTimeInMillis();
	}
	public static String getNowDateYYYYMMDD() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		return sdf.format(date);
	}
	public static String getNowDate(String format) {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}
	public static String getNowDateYYMMDD() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
		return sdf.format(date);
	}
	
	public static String getNowDateYYYYMM(){
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
		return sdf.format(date);
	}
	public static String getNowDateYYYY_MM_DD() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(date);
	}
	public static String getNowDateYYYY_MM_DD_HH_MM() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		return sdf.format(date);
	}
	public static String getNowDateYYYY_MM_DD_HH_MM_SS() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}
	public static String getNowDateYYYYMMDDHHMMSS() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		return sdf.format(date);
	}
	public static String getNowDateYYYYMMDDHHMMSSSS() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
		return sdf.format(date);
	}
	public static Integer handleIntTime(Date date, String weekDayName) {
		for (int i = 0; i <= 3; i++) {
			Calendar cal = Calendar.getInstance();
			cal.setTime(date);
			cal.add(Calendar.DAY_OF_MONTH, -i);
			int day = cal.get(Calendar.DAY_OF_WEEK);
			String tempWeek = week[day];
			if (tempWeek.equals(weekDayName))
				return Integer.valueOf(dateToString(cal.getTime(), "yyyyMMdd"));
		}
		return null;
	}
	
	public static String getWeekStr2(Date date,String[] week) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return week[cal.get(Calendar.DAY_OF_WEEK)];
	}
	public static String getWeekStr(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return week[cal.get(Calendar.DAY_OF_WEEK)];
	}
	
	/**
	 * 补充年份 
	 * 排除1月份获取同年12月份时间&12月份获取同年1月份时间
	 * @param dateStr
	 * @param date 参考时间
	 * @return
	 */
	public static Date strToDateDafueYear(String dateStr,Date date) {
		Date nowDate=new Date();
		String nowYear=DateTools.dateToString(nowDate,"yyyy");
		Date matchDate = DateTools.StringToDate(nowYear+"-"+dateStr, "yyyy-MM-dd HH:mm");
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(matchDate);
		Calendar now = Calendar.getInstance();
		//有参考值使用参考值的年份
		if(date!=null){
			now.setTime(date);
			calendar.set(Calendar.YEAR, now.get(Calendar.YEAR));
		}else{
			//排除1月份获取同年12月份时间&12月份获取同年1月份时间
			if(calendar.getTimeInMillis()<now.getTimeInMillis()&&calendar.get(Calendar.MONTH)==0&&now.get(Calendar.MONTH)==11){
				calendar.set(Calendar.YEAR, now.get(Calendar.YEAR)+1);
			}else if(calendar.getTimeInMillis()>now.getTimeInMillis()&&calendar.get(Calendar.MONTH)==11&&now.get(Calendar.MONTH)==0){
				calendar.set(Calendar.YEAR, now.get(Calendar.YEAR)-1);
			}
		}
		return calendar.getTime();
	}
	public static Date strToDateDafueYear(String dateStr) {
		return strToDateDafueYear(dateStr,null);
	}
	public static Date getDateByOffsetDay(Date date, int offset) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_YEAR, offset);
		return cal.getTime();
	}
	public static boolean isDateBefore(String date2, Date date1) {
		try {
			DateFormat df = DateFormat.getDateTimeInstance();
			return date1.before(df.parse(date2));
		} catch (ParseException e) {
			System.out.print(e.getMessage());
			return false;
		}
	}
	
	public static boolean isIndexDCDateBefore(Date date){
		try {
			Calendar c = Calendar.getInstance();
			GregorianCalendar ca = new GregorianCalendar(); 
			
			if(ca.get(GregorianCalendar.AM_PM) == 1)//判断上下午时间
				c.set(Calendar.HOUR, -2);
			else
				c.set(Calendar.HOUR, +10);
			
	        c.set(Calendar.SECOND, 0);
	        c.set(Calendar.MINUTE, 0);
			Date afterTime=c.getTime();//当天10时后
			return afterTime.before(date);
		} catch (Exception e) {
			System.out.print(e.getMessage());
			return false;
		}
	}
	
	public static boolean isIndexDCDateAfter(Date date){
		try {
			Calendar c = Calendar.getInstance();
			GregorianCalendar ca = new GregorianCalendar(); 
			
			if(ca.get(GregorianCalendar.AM_PM) == 1)//判断上下午时间
				c.set(Calendar.HOUR, +22);
			else
				c.set(Calendar.HOUR, +34);
			
	        c.set(Calendar.SECOND, 0);
	        c.set(Calendar.MINUTE, 0);
			Date beforeTime=c.getTime();//明天10时前
			return beforeTime.after(date);
		} catch (Exception e) {
			System.out.print(e.getMessage());
			return false;
		}
		
	}
	public static Date GetDCMatchEndTime(Date matchTime, int aheadMilli) {
		if(matchTime == null) return null;
		Calendar matchCal = Calendar.getInstance();
		matchCal.setTime(matchTime);
		Calendar stopPlayTicketCal = (Calendar) matchCal.clone();
		stopPlayTicketCal.set(Calendar.HOUR_OF_DAY, 4);
		stopPlayTicketCal.set(Calendar.MINUTE, 50);
		stopPlayTicketCal.set(Calendar.SECOND, 0);
		
		//欧洲杯延长销售时间 9点开始至次日凌晨6点
		Date euroCupStart = DateTools.StringToDate("2012-06-08 9:00:00") ;
		Date euroCupEnd = DateTools.StringToDate("2012-07-03 06:00:00");
		if(matchTime.getTime()>euroCupStart.getTime()&&matchTime.getTime()<euroCupEnd.getTime()){
			stopPlayTicketCal.set(Calendar.HOUR_OF_DAY, 5);
		}
		stopPlayTicketCal.add(Calendar.MILLISECOND, -aheadMilli);
		
		Calendar startPlayTicketCal = (Calendar) matchCal.clone();
		startPlayTicketCal.set(Calendar.HOUR_OF_DAY, 9);
		startPlayTicketCal.set(Calendar.MINUTE, 0);
		startPlayTicketCal.set(Calendar.SECOND, 0);
		Calendar weStartPlayTicketCal = (Calendar) startPlayTicketCal.clone();
		weStartPlayTicketCal.add(Calendar.MILLISECOND, +aheadMilli);
		// if(matchCal.after(stopPlayTicketCal)&&(matchCal.before(startPlayTicketCal)||matchCal.equals(startPlayTicketCal))){
		//    		
		// //(4:50-aheadMilli)——(9:00) 都设置成为(4:50-aheadMilli)
		// return stopPlayTicketCal.getTime();
		// }else
		// if(matchCal.after(startPlayTicketCal)&&matchCal.before(weStartPlayTicketCal)){
		// //(9:00)——(9:00+aheadMilli) 都设置 (4:50-aheadMilli)+offset
		// int offset=(int)
		// (weStartPlayTicketCal.getTimeInMillis()-matchCal.getTimeInMillis());
		// stopPlayTicketCal.add(Calendar.MILLISECOND, +offset);
		// return stopPlayTicketCal.getTime();
		if (matchCal.after(stopPlayTicketCal) && matchCal.before(weStartPlayTicketCal)) {
			// (4:50-aheadMilli)——(9:00+aheadMilli) 都设置 (4:50-aheadMilli)
			return stopPlayTicketCal.getTime();
		} else {
			matchCal.add(Calendar.MILLISECOND, -aheadMilli);
			return matchCal.getTime();
		}
	}
	
	
	/**
     * 获取距离现在的时间
     */
    public static String getMinutes (Date times){
        long time = new Date().getTime() - times.getTime();//time 单位是 毫秒
        String res = null;
        //转化成天数
        //先判断是不是小于 60 * 60 * 1000  也就是 小于1小时,那么显示 : **分钟前
        if(time < 60 * 60 * 1000){
            res =  (time / 1000 / 60 ) + "分钟前";
        }
        //如果大于等于1小时 小于等于一天,那么显示 : **小时前
        else if(time >= 60 * 60 * 1000 && time < 24 * 60 * 60 * 1000){
            res =  (time / 1000 / 60 / 60 ) + "小时前";
        }
        //如果大于等于1小时 小于等于一天,那么显示 : **小时前
        else if(time >= 24 * 60 * 60 * 1000){
            res =  (time / 1000 / 60 / 60 /24 ) + "天前";
        }
        //如果时间不明确或者发帖不足一分钟 ,则不显示
        else{
            res = "";
        }
        
        return res;
    }
    
    /**
     * 取得系统当前时间前n个月的相对应的一天
     * @param n int
     * @return String yyyy-mm-dd
     */
    public static String getNMonthBeforeCurrentDay(int n) {
      Calendar c = Calendar.getInstance();
      c.add(Calendar.MONTH, -n);
      return "" + c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
    }
    
    public static List<String> getAllBeforeDateToAfterDateSpace(String string, String string2) {
    	List<String> date = null;
    	try {
    		date = new ArrayList<String>();
    		Date dateTemp = new SimpleDateFormat("yyyy-MM-dd").parse(string);
    		Date dateTemp2 = new SimpleDateFormat("yyyy-MM-dd").parse(string2);
    		Calendar calendarTemp = Calendar.getInstance();
    		calendarTemp.setTime(dateTemp);
    		while (calendarTemp.getTime().getTime()!= dateTemp2.getTime()) {
    			date.add(new SimpleDateFormat("yyyy-MM-dd").format(calendarTemp.getTime()));
    			calendarTemp.add(Calendar.DAY_OF_YEAR, 1);
    		}
    		date.add(string2);
    	} catch (ParseException e) {
    			e.printStackTrace();
    	}
		return date;
    }
    
    /*******得到昨天日期*******/
    public static String getYesterDay(){
    	Calendar cal = Calendar.getInstance(); 
	    cal.add(Calendar.DATE,-1); 
	    return new SimpleDateFormat("yyyyMMdd").format(cal.getTime());
    }
	
	/**
	 * 获取两个日期之间间隔天数
	 * @param startDate
	 * @param endDate
	 * @return
	 */
    public static String getTwoDay(Date startDate, Date endDate) {
		long day = 0;
		try {
			day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
		} catch (Exception e) {
			return "";
		}
		return day+"";
	}
    
	public static void main(String args[]) {
		String dateStr1 = "2011-07-03 4:50:00";
		String dateStr2 = "2012-07-03 5:15:00";
		String dateStr3 = "2012-07-03 6:15:00";
		String dateStr4 = "2012-07-03 7:15:00";
		String dateStr5 = "2012-07-03 8:15:00";
		//String dateStr6= "2012-06-09 9:00:00";
		String dateStr6 = "2012-07-03 9:16:00";
		String dateStr7 = "2012-07-03 10:15:00";
		String format = "yyyy-MM-dd HH:mm:ss";
		Date date = stringToDate(dateStr1, format);
		Date handleDate = GetDCMatchEndTime(date, 1200000);
		System.out.println(dateToString(handleDate));
		date = stringToDate(dateStr2, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
		date = stringToDate(dateStr3, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
		date = stringToDate(dateStr4, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
		date = stringToDate(dateStr5, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
		date = stringToDate(dateStr6, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
		
		date = stringToDate(dateStr7, format);
		handleDate = GetDCMatchEndTime(date, 600000);
		System.out.println(dateToString(handleDate));
//		String dateText="12-30 02:30";
//		System.out.println(DateTools.dateToString(strToDateDafueYear(dateText,new Date())));
	}
	/**
	 * 检查给定时间是否在指定时间区间
	 * @param startTime
	 * @param endTime
	 * @param checkTime
	 * @return
	 */
	public static boolean isBetween(Date startTime,Date endTime,Date checkTime){
		Calendar cal1 = Calendar.getInstance();
		Calendar cal2 = Calendar.getInstance();
		Calendar cal3 = Calendar.getInstance();
		cal1.setTime(checkTime);
		cal2.setTime(startTime);
		cal3.setTime(endTime);
		if(cal2.before(cal1)&& cal3.after(cal1)){
	    	return true;
		}
		return false;
	}
	
	//根据日期取得星期几  
    public static String getWeek(Date date){  
        String[] weeks = {"周日","周一","周二","周三","周四","周五","周六"};  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date);  
        int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;  
        if(week_index<0){  
            week_index = 0;  
        }   
        return weeks[week_index];  
    }  
    
    /**
     * 日期加减操作
     * @param date
     * @return
     */
    public static Date jiaOrJian(Date date,int num){
    	Calendar cal = Calendar.getInstance(); 
	    cal.add(Calendar.DATE,num); 
	    return cal.getTime();
    }
    
    public static Date toDate(String source) { 
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
		Date date=null;
		try {
			date=sdf.parse(source);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
}
最近下载更多
                
                kong.yee     LV40
                2020年6月26日
            
            
        
                ysyxlnm     LV13
                2020年3月20日
            
            
        
                zhoule1226     LV1
                2018年6月11日
            
            
        
                乞丐哥哥     LV23
                2018年3月25日
            
            
        
                xturuanjian     LV4
                2018年1月8日
            
            
        
                lichangliu1098     LV12
                2017年1月10日
            
            
        
                zyl     LV34
                2016年9月6日
            
            
        
                最不屑一顾是相思     LV19
                2016年8月11日
            
            
        
                ybbghdiu     LV27
                2014年12月19日
            
            
        
                
                
    
最近浏览