日期工具类

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.List;  
import java.util.regex.Pattern;  
  
public class DatetimeUtil {  
      
    /** 
     *  
     * @return  当前日期和时间  格式:20110101121212000 
     */  
    public static String getTimeStampStr() {  
        return getDateTime("yyyyMMddHHmmssSSS");  
    }  
      
    /** 
     *  
     * @return  当前日期和时间  格式:2011-01-01 12:12:12 
     */  
    public static String getCurrentDateAndTime() {  
        return getDateTime("yyyy-MM-dd HH:mm:ss");  
    }  
      
    /** 
     *  
     * @return  获取当前日期  格式:2011-01-01 
     */  
    public static String getCurrentDate() {  
        return getDateTime("yyyy-MM-dd");  
    }  
      
    /** 
     *  
     * @return  获取当前时间 格式  12:12:12 
     */  
    public static String getCurrentTime() {  
        String date = getDateTime("HH:mm:ss");  
        return date;  
    }  
  
      
    /** 
     *  
     * @return  获取当前时间戳  
     */  
    public static long getTimestamp() {  
        Date dateNow = new Date();  
        return dateNow.getTime();  
    }  
  
    /** 
     * 将时间的string转换为Date类型 
     * @param str 例2011-01-01 12:12:12 
     * @return 时间类型对象 
     */  
    public static Date StringToDate(String str){  
        DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");           
        Date date = null;      
        try {      
            date = format1.parse(str);     
        } catch (ParseException e) {  
            e.printStackTrace();      
        }      
        return date;    
    }  
      
    public static String getDateTime(String pattern) {  
        if (null == pattern || "".equals(pattern)) {  
            pattern = "yyyy-MM-dd HH:mm:ss";  
        }  
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);  
        String dt = sdf.format(new Date());  
        return dt;  
    }   
    /** 
     * 将时间的Date转换为String类型 
     * @param date  
     * @param pattern 指定返回的日期字符串的格式 ,如果没有指定则默认为"yyyy-MM-dd HH:mm:ss" 
     * @return String 返回为指定pattern格式的字符串 
     * @exception NullPointerException - 如果给定的模式为 null 
     * @exception IllegalArgumentException - 如果给定的模式无效 
     */  
    public static String dateToString(Date date,String ...pattern){  
        String pattern2="yyyy-MM-dd HH:mm:ss";  
        if(pattern.length>0){  
            pattern2=pattern[0];  
        }  
        DateFormat format1 = new SimpleDateFormat(pattern2);           
          
        return format1.format(date);    
    }  
    /** 
     * 生成日期列表,包含开始日期和结束日期 
     * @param start 开始日期     
     * @param end 结束日期 
     * @param pattern 指定返回的日期的格式 ,如果未指定则默认为"yyyy-MM-dd" 
     * @return 包含开始日期和结束日期的日期列表,包含开始日期和结束日期,返回的日期格式为指定的pattern 
     */  
    @SuppressWarnings("deprecation")  
    public static List<String> getDateList(Date start,Date end,String ...pattern){  
        List<String> ret=new ArrayList<String>();  
        String pattern2="yyyy-MM-dd";  
        if(pattern.length>0){  
            pattern2=pattern[0];  
        }  
        while(start.compareTo(end)<=0){  
            ret.add(dateToString(start,pattern2));  
            start.setDate(start.getDate()+1);  
        }  
        return ret;  
    }  
    /** 
     * 将时间的string转换为Date类型,注意本类中的另一个方法与此方法首字母的不同 
     * @param datestr 例2011-01-01 12:12:12 
     * @param pattern 指定转换的格式,如果不存在,则默认为yyyy-MM-dd HH:mm:ss 
     * @return 时间类型对象 
     */  
    public static Date stringToDate(String datestr,String ...pattern){  
        String pattern2="yyyy-MM-dd HH:mm:ss";  
        if(pattern.length>0){  
            pattern2=pattern[0];  
        }  
        DateFormat format1 = new SimpleDateFormat(pattern2);           
        Date date = null;      
        try {      
            date = format1.parse(datestr);     
        } catch (ParseException e) {  
            e.printStackTrace();      
        }      
        return date;    
    }  
      
    /** 
     * 获取上个月的今天 
     * @return  当前日期和时间  格式:2011-01-01 12:12:12 
     */  
    public static String getLastMonthDateAndTime() {  
        String year = getDateTime("yyyy");  
        String month = getDateTime("MM");  
        if(Integer.parseInt(month) > 1){  
            month = String.valueOf((Integer.parseInt(month)-1));  
            if(month.length() == 1){  
                month = "0" + month;  
            }  
        }else{  
            month = "12";  
            year = String.valueOf(Integer.parseInt(year)-1);  
        }  
        String time = getDateTime("-dd HH:mm:ss");  
        time = year + "-" + month + time;  
        return time;  
    }  
      
    /** 
     * 根据当前时间生成流水号 
     * @param prefix 例"R" 
     * @return  当前日期和时间  格式:2011-01-01 12:12:12 
     */  
    public static String getSwiftnumber(String prefix) {  
        String swiftnumber = prefix;  
        String date = getCurrentDate();  
        String[] temp = date.split("-");  
        swiftnumber += (temp[0] + temp[1] + temp[2]);  
        return swiftnumber;  
    }  
      
    public static boolean timeMatch(String startdate){  
        String datereg="(([\\d]{2}(([02468][048])|[13579][26])\\-"// 闰年  
            + "((((0[13578])|(1[02]))\\-(([012][\\d])|(3[01])))"  
            + "|(((0[469])|(11))\\-(([012][\\d])|30))"  
            + "|(02\\-[012][\\d])))" // 月日  
  
            + "|([\\d]{2}(([02468][^0^4^8])|([13579][^2^6]))\\-"// 非闰年  
            + "((((0[13578])|(1[02]))\\-(([012][\\d])|(3[01])))"  
            + "|(((0[469])|(11))\\-(([012][\\d])|30))"  
            + "|(02\\-(([01][\\d])|(2[0-8]))))))";  
        return Pattern.matches(datereg, startdate);  
    }  
  
    public static String getDateByYearlimited(Integer limitedyear) {  
        String year = getDateTime("yyyy");  
        year = String.valueOf((Integer.parseInt(year) + limitedyear));  
        String date = getDateTime("-mm-dd");  
        return year + date;  
    }  
  
    public static String getTomorrow() {  
        String year = getDateTime("yyyy");  
        String month = getDateTime("MM");  
        String day = getDateTime("dd");  
        if("01".equals(month) || "03".equals(month) || "05".equals(month) || "07".equals(month) || "08".equals(month) || "10".equals(month)){  
            if(Integer.parseInt(day) >= 31){  
                month = String.valueOf(Integer.parseInt(month) + 1) ;  
                if(month.length() == 1){  
                    month = "0" + month;  
                }  
                day = "01";  
            }else{  
                day = String.valueOf(Integer.parseInt(day) + 1);  
                if(day.length() == 1){  
                    day = "0" + day;  
                }  
            }  
        }else if("04".equals(month) || "06".equals(month) || "09".equals(month) || "11".equals(month)){  
            if(Integer.parseInt(day) >= 30){  
                month = String.valueOf(Integer.parseInt(month) + 1) ;  
                if(month.length() == 1){  
                    month = "0" + month;  
                }  
                day = "01";  
            }else{  
                day = String.valueOf(Integer.parseInt(day) + 1);  
                if(day.length() == 1){  
                    day = "0" + day;  
                }  
            }  
        }else if("02".equals(month)){  
            int intyear = Integer.parseInt(year);  
            if((intyear % 4 == 0) && (intyear % 100 != 0)||(intyear % 400==0)){  
                if(Integer.parseInt(day) >= 29){  
                    month = String.valueOf(Integer.parseInt(month) + 1) ;  
                    if(month.length() == 1){  
                        month = "0" + month;  
                    }  
                    day = "01";  
                }else{  
                    day = String.valueOf(Integer.parseInt(day) + 1);  
                    if(day.length() == 1){  
                        day = "0" + day;  
                    }  
                }  
            }else{  
                if(Integer.parseInt(day) >= 28){  
                    month = String.valueOf(Integer.parseInt(month) + 1) ;  
                    if(month.length() == 1){  
                        month = "0" + month;  
                    }  
                    day = "01";  
                }else{  
                    day = String.valueOf(Integer.parseInt(day) + 1);  
                    if(day.length() == 1){  
                        day = "0" + day;  
                    }  
                }  
            }  
              
        }else if("12".equals(month)){  
            if(Integer.parseInt(day) >= 31){  
                year = String.valueOf(Integer.parseInt(year) + 1) ;  
                month = "01";  
                day = "01";  
            }else{  
                day = String.valueOf(Integer.parseInt(day) + 1);  
                if(day.length() == 1){  
                    day = "0" + day;  
                }  
            }  
        }  
        String time = getDateTime(" HH:mm:ss");  
        time = year + "-" + month + "-" + day + time;  
        return time;  
    }  
    /** 
     * 获得过去几天前或几天后的日期 
     * @param days 负为几天前, 正为几天后 
     * @return 
     */  
    public static String getNextDay(Long days) {  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
        String dt = sdf.format(new Date(new Date().getTime()+days*1000*3600*24));  
        return dt;  
    }  
      
    public static String getLastDay() {  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
        String dt = sdf.format(new Date(new Date().getTime()-1000*3600*24));  
        return dt;  
    }  
      
    public static String getNextDay() {  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
        String dt = sdf.format(new Date(new Date().getTime() + 1000*3600*24));  
        return dt;  
    }  
  
    public static Boolean checktime(String time){  
        if(getTimestamp() - StringToDate(time).getTime() <= 600000 && getTimestamp() - StringToDate(time).getTime() >= -600000){  
            return true;  
        }  
        return false;  
    }  
  
    /** 
     * 按日历算日期(明天或者昨天) 
     *  
     * @param date 
     * @param field 
     * @param amount 
     * @see Calendar#add(int, int) 
     * @return 
     */  
    public static String dateWalker(String date, int field, int amount) {  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
        Calendar cal = Calendar.getInstance();    
        try {  
            cal.setTime(sdf.parse(date));  
            cal.add(field, amount);   
            String target = sdf.format(cal.getTime());  
            return target;  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }   
        return null; // 无法解析输入时间  
    }  
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值