All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aspire.nm.component.commonUtil.date.DateUtil Maven / Gradle / Ivy

package com.aspire.nm.component.commonUtil.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;


public   class   DateUtil   
{ 
	/**
	 * 日期长字符串格式符
	 */
	public static final String DATE_FORMAT_FULL = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 日期短字符串格式符
	 */
	public static final String DATE_FORMAT_SHORT = "yyyy-MM-dd";
	
	/**
	 * 日期紧凑串格式符
	 */
	public static final String DATE_FORMAT_COMPACTSHORT = "yyyyMMdd";
	
	/**
	 * 紧凑格式的全字符串
	 */
	public static final String DATE_FORMAT_COMPACTFULL = "yyyyMMddHHmmss";
	
	
	
	public static final String DATE_FORMAT_HHMMSS = "HH:mm:ss";
	
	
	/**
     * 得到当前日期
     *
     * @return 当前日期 yyyy-MM-dd HH:mm:ss格式
     */
    public static String getCurDateTime() {
        Calendar now = Calendar.getInstance(TimeZone.getDefault());
        DateFormat sdf = new SimpleDateFormat(DATE_FORMAT_FULL);
        sdf.setTimeZone(TimeZone.getDefault());
        return (sdf.format(now.getTime()));
    }
    /**
     * 得到当前日期
     * @Format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return 当前日期
     */
    public static String getCurDateTimeFormat(String Format) {
        Calendar now = Calendar.getInstance(TimeZone.getDefault());
        DateFormat sdf = new SimpleDateFormat(Format);
        sdf.setTimeZone(TimeZone.getDefault());
        return (sdf.format(now.getTime()));
    }
    /**
     * 得到一个Date对象
     *
     * @tdate 时间的字符串表示
     * @format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return Date对象
     * @throws ParseException 
     */
    public static Date getDate(String date,String format) throws ParseException{
    	SimpleDateFormat formatter = new SimpleDateFormat(format);
    	return formatter.parse(date);
    }
    /**
     * 得到Date转换后的String
     * @param date 时间的Date格式
     * @param format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return date 时间的String格式
     */
    public static String getDateString(Date date,String format){
    	SimpleDateFormat sdf = new SimpleDateFormat(format); 
    	return sdf.format(date);
    }
    
    
    /**
     * System.currentTimeMillis()时间格式化l
     * @return
     */
    public static String getTimeFromCurrent(long l){
        
        if(l ==0)return "";
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(l));
    }
    /**
     * 得到当前星期几
     * @return 当前的星期几,如 "星期一"
     */
    public static String getWeekDay() {
        Calendar now = Calendar.getInstance(TimeZone.getDefault());
        int r = now.get(Calendar.DAY_OF_WEEK);
        if(r == Calendar.SUNDAY){
        	return "星期日";
        }
        if(r == Calendar.MONDAY){
        	return "星期一";
        }
        if(r == Calendar.TUESDAY){
        	return "星期二";
        }
        if(r == Calendar.WEDNESDAY){
        	return "星期三";
        }
        if(r == Calendar.THURSDAY){
        	return "星期四";
        }
        if(r == Calendar.FRIDAY){
        	return "星期五";
        }
        if(r == Calendar.SATURDAY){
        	return "星期六";
        }
        return null;
    }
    /**
     * 得到星期几
     * yyyy_mm_dd 日期格式, yyyy-MM-dd
     * @return 参数日期是星期几
     * @throws ParseException 
     */
    public static String getWeekDay(String yyyy_mm_dd) throws ParseException {
    	SimpleDateFormat   dateFormat = new   SimpleDateFormat("yyyy-MM-dd");
    	Date date = dateFormat.parse(yyyy_mm_dd);;
    	
    	Calendar cd = Calendar.getInstance();   
    	cd.setTime(date);
    	int r = cd.get(Calendar.DAY_OF_WEEK);
    	if(r == Calendar.SUNDAY){
        	return "星期日";
        }
        if(r == Calendar.MONDAY){
        	return "星期一";
        }
        if(r == Calendar.TUESDAY){
        	return "星期二";
        }
        if(r == Calendar.WEDNESDAY){
        	return "星期三";
        }
        if(r == Calendar.THURSDAY){
        	return "星期四";
        }
        if(r == Calendar.FRIDAY){
        	return "星期五";
        }
        if(r == Calendar.SATURDAY){
        	return "星期六";
        }
        return null;
    }
    /**
     * 是否是今天
     *
     * @yyyy_mm_dd 所判断的当前日期  yyyy-MM-dd
     * @return 是今天则返回true
     * @throws ParseException 
     */
    public static boolean isCurrentDay(String yyyy_mm_dd) throws ParseException {
        boolean bRet = false;
        Calendar now = Calendar.getInstance(TimeZone.getDefault());
        DateFormat sdf = new SimpleDateFormat(DATE_FORMAT_SHORT);
        sdf.setTimeZone(TimeZone.getDefault());
        Date date1 = sdf.parse(yyyy_mm_dd);
        String strDate1 = sdf.format(date1);
        String strDate2 = sdf.format(now.getTime());
        bRet = strDate1.equalsIgnoreCase(strDate2);
        return bRet;
    }
    
    
    
    /**
     * 得到N分钟后的时间
     *
     * @theDate 某日期 格式 yyyy-MM-dd HH:mm:ss 等
     * @nMinutesNum    N分钟
     * @format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return N分钟后的日期
     * @throws ParseException 
     */
    public static String afterNMinutesDate(String theDate, int nMinutesNum, String format) throws ParseException {
    	SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date dd1 = sdf.parse(theDate);
        Calendar cal = Calendar.getInstance();
        cal.setTime(dd1);
        cal.add(Calendar.MINUTE, nMinutesNum);
        sdf.setTimeZone(TimeZone.getDefault());
        return (sdf.format(cal.getTime()));
    }
    /**
     * 得到N天后的日期
     *
     * @theDate 某日期 格式 yyyy-MM-dd HH:mm:ss 等
     * @nDayNum    N天
     * @format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return N天后的日期
     * @throws ParseException 
     */
    public static String afterNDaysDate(String theDate, int nDayNum, String format) throws ParseException {
    	SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date dd1 = sdf.parse(theDate);
        Calendar cal = Calendar.getInstance();
        cal.setTime(dd1);
        cal.add(Calendar.DAY_OF_YEAR, nDayNum);
        sdf.setTimeZone(TimeZone.getDefault());
        return (sdf.format(cal.getTime()));
    }
    /**
     * 得到N天前的日期
     *
     * @theDate 某日期 格式 yyyy-MM-dd HH:mm:ss, 等
     * @nDayNum    N天
     * @format 日期格式, yyyy-MM-dd HH:mm:ss, 等
     * @return N天前的日期
     * @throws ParseException 
     */
    public static String beforeNDaysDate(String theDate, int nDayNum, String format) throws ParseException {
    	return afterNDaysDate(theDate, 0-nDayNum, format);
    }
    /**
     * 获取两个日期中间的天数
     * @param yyyy_mm_dd_1 第一个日期(yyyy-MM-dd)
     * @param yyyy_mm_dd_2 第二个日期(yyyy-MM-dd)
     * @return daycount 前一个日期减去后一个日期的天数
     * @throws ParseException 
     */
    public static int getDayCount(String yyyy_mm_dd_1, String yyyy_mm_dd_2) throws ParseException {   
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");   
        java.util.Date date = myFormatter.parse(yyyy_mm_dd_1);   
    	java.util.Date mydate = myFormatter.parse(yyyy_mm_dd_2);   
    	return (int)((date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000));   
    }
    /**
     * 获取本周一的日期
     * @return 本周一的日期(字符串yyyy-MM-dd格式)
     */
    public static String getMondayOFWeek(){   
        int mondayPlus = getMondayPlus();   
        GregorianCalendar currentDate = new GregorianCalendar();   
        currentDate.add(GregorianCalendar.DATE, mondayPlus);   
        Date monday = currentDate.getTime();   
           
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
        String preMonday = sdf.format(monday);   
        return preMonday;   
   }
    /**
     * 获取当月第一天
     * @return 当月的第一天(字符串yyyy-MM-dd格式)
     */
    public static String getFirstDayOfMonth(){     
        String str = "";   
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
   
        Calendar lastDate = Calendar.getInstance();   
        lastDate.set(Calendar.DATE,1);//设为当前月的1号   
        str=sdf.format(lastDate.getTime());   
        return str;     
     }
    
    /**
     * 获取当月最后一天
     * @return 当月的第一天(字符串yyyy-MM-dd格式)
     */
    public static String getLastDayOfMonth(){
    	
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    	
    	Calendar ca = Calendar.getInstance();
        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));  
        String last = sdf.format(ca.getTime());
        return last;
     }
    
    
    /**
     * 获得本季度第一天
     * @return 获得本季度第一天(字符串yyyy-MM-dd格式)
     */
    public static String getFirstDayOfSeason(){
    	SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
		String str=df.format(new Date());
		//当前月份
		int month = Integer.parseInt(str.substring(4, 6));

		
		int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};   
        int season = 1;   
        if(month>=1&&month<=3){   
            season = 1;   
        }   
        if(month>=4&&month<=6){   
            season = 2;   
        }   
        if(month>=7&&month<=9){   
            season = 3;   
        }   
        if(month>=10&&month<=12){   
            season = 4;   
        }   
        int start_month = array[season-1][0];   
        int end_month = array[season-1][2];   
           
        Date date = new Date();   
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式      
        String  years  = dateFormat.format(date);      
        int years_value = Integer.parseInt(years);   
           
        int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);   
        @SuppressWarnings("unused")
		int end_days = getLastDayOfMonth(years_value,end_month);
//      本季度第一天
        String seasonstartDate = years_value+"-"+(start_month<10?"0"+start_month:start_month)+"-"+(start_days<10?"0"+start_days:start_days);
        
//      本季度最后一天
//      String seasonendDate = years_value+"-"+end_month+"-"+end_days;   
        return seasonstartDate;   
    }
    /**
     * 获取本年第一天的日期
     * @return 本本年第一天的日期(字符串yyyy-MM-dd格式)
     */
    public static String getFirstDayOfYear(){   
        int yearPlus = getYearPlus();   
        GregorianCalendar currentDate = new GregorianCalendar();   
        currentDate.add(GregorianCalendar.DATE,yearPlus);   
        Date yearDay = currentDate.getTime();   
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
        String preYearDay = sdf.format(yearDay);   
        return preYearDay;   
    }
    /**
     * 得到时间间隔(秒)
     * @date1,时间参数1
     * @date2,时间参数2
     * @format 时间格式,如yyyy-MM-dd HH:mm:ss
     * @return
     * @throws ParseException 
     */
    public static long getInters(String date1,String date2,String format) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        Date d1 =  formatter.parse(date1);
		Date d2 =  formatter.parse(date2);
		long result =  (d1.getTime() - d2.getTime())/1000;
		if(result < 0){
			return -result;
		}else{
			return result;
		}
    }
    
    public static boolean isStoockTime(){
    	 if(getWeekDay().equals("星期六") || getWeekDay().equals("星期日")){
    		 return false;
    	 }
    	 String hhmmss = getCurDateTimeFormat(DateUtil.DATE_FORMAT_HHMMSS);
    	 if(hhmmss.compareTo("09:15:00") > 0 && hhmmss.compareTo("11:30:00") < 0){
    		 return true;
    	 }
    	 if(hhmmss.compareTo("13:00:00") > 0 && hhmmss.compareTo("15:00:00") < 0){
    		 return true;
    	 }
    	 return false;
    }
    
    
   
    
    
    
    
    
    
    private static int getMondayPlus() {   
        Calendar cd = Calendar.getInstance();   
        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......   
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;//因为按中国礼拜一作为第一天所以这里减1   
        if (dayOfWeek == 1) {   
            return 0;   
        } else {   
            return 1 - dayOfWeek;   
        }   
    }
    private static int getYearPlus(){   
        Calendar cd = Calendar.getInstance();   
        int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天   
        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天   
        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。   
        int MaxYear = cd.get(Calendar.DAY_OF_YEAR);   
        if(yearOfNumber == 1){   
            return -MaxYear;   
        }else{   
            return 1-yearOfNumber;   
        }   
    }
    private static boolean isLeapYear(int year) {    
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);    
    } 
    private static int getLastDayOfMonth(int year, int month) {    
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8   
                  || month == 10 || month == 12) {    
              return 31;    
        }    
        if (month == 4 || month == 6 || month == 9 || month == 11) {    
              return 30;    
        }    
        if (month == 2) {    
              if (isLeapYear(year)) {    
                  return 29;    
              } else {    
                  return 28;    
              }    
        }    
        return 0;    
  } 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy