package cn.com.qmhd.tools;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    private static DateUtils dateUtils = null;
    private Calendar calendar;
    private SimpleDateFormat sdf;
    
    public static DateUtils getInstance(){
        if (dateUtils==null) {
            dateUtils=new DateUtils();
        }
        return dateUtils;
    }
    
    /**
     * 时间格式转换
     * @param date 指定日期
     * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss"
     */
    public String date(Date date,String format){
        sdf=new SimpleDateFormat(format);
        String time=sdf.format(date);
        return time;
    }
    
    /**
     * 获取当前时间
     * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss"
     * @return 返回字符串格式当前时间
     */
    public String getNowDate(String format){
        sdf = new SimpleDateFormat(format);
        return sdf.format(new Date());
    }
    
    //获取当前时间年份
    public int getNowYear(){
        return Calendar.getInstance().get(Calendar.YEAR);
    }
    
    //获取当前时间月份
    public int getNowMonth(){
        return Calendar.getInstance().get(Calendar.MONTH)+1;
    }
    
    //获取当前时间日期
    public int getNowDay(){
        return Calendar.getInstance().get(Calendar.DATE);
    }
    
    //获取当前时间小时
    public int getNowHour(){
        return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    }
    
    //获取当前时间分钟
    public int getNowMinute(){
        return Calendar.getInstance().get(Calendar.MINUTE);
    }
    
    //获取当前时间秒
    public int getNowSecond(){
        return Calendar.getInstance().get(Calendar.SECOND);
    }
    
    /**获取指定某天的年、月、日、时、分、秒信息
     * @param date 指定日期
     * @param str 需要获取日期内信息名称
     * @return 返回需要日期信息,当返回值为-1,则输入日期或者获取信息名称有误
     */
    public int dateInfos(Date date,String str){
        calendar=Calendar.getInstance();
        calendar.setTime(date);
        
        int year=calendar.get(Calendar.YEAR);
        int month=calendar.get(Calendar.MONTH)+1;
        int day=calendar.get(Calendar.DATE);
        int hour=calendar.get(Calendar.HOUR);
        int minute=calendar.get(Calendar.MINUTE);
        int second=calendar.get(Calendar.SECOND);
        
        if("year".equals(str)){
            return year;
        }else if("month".equals(str)){
            return month;
        }else if("day".equals(str)){
            return day;
        }else if("hour".equals(str)){
            return hour;
        }else if("minute".equals(str)){
            return minute;
        }else if("second".equals(str)){
            return second;
        }
        
        return -1;
    }
    
    /**
     * 获取指定日期之前或者之后某月第一天
     * @param date 指定日期
     * @param month 指定日期之前几月(负数)或者之后几月(正数),当month=0时,则得到指定日期当月
     * @param format 指定之前几天(负数)或者之后几天(正数)
     * @return 返回字符串格式日期
     */
    public String getFirstDay(Date date,int month,String format){
        calendar=Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH,1);
        calendar.add(Calendar.MONTH, month);
        
        Date getDate=calendar.getTime();
        return date(getDate, format);
    }
    
    /**
     * 获取指定日期之前或者之后某月最后一天
     * @param date 指定日期
     * @param month 指定日期之前几月(负数)或者之后几月(正数),当month=0时,则得到指定日期当月
     * @param format 指定之前几天(负数)或者之后几天(正数)
     * @return 返回字符串格式日期
     */
    public String getLastDay(Date date,int month,String format){
        calendar=Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, month+1);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.DAY_OF_MONTH,-1);
        
        Date getDate=calendar.getTime();
        return date(getDate, format);
    }
    
    /**
     * 获取指定时间前或后几天日期
     * @param date 指定日期
     * @param day 指定日期之前几天(负数)或者之后几天(正数)
     * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss"
     * @return time 返回字符串格式日期
     */
    public String getBeforeOrAfterDate(Date date,int day,String format){
        calendar=Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, day);
        
        Date getDate=calendar.getTime();
        sdf=new SimpleDateFormat(format);
        String time=sdf.format(getDate);
        
        return time;
    }
    
    /**
     * 获取指定时间前或后几天日期
     * @param date 指定日期
     * @param day 指定之前几天(负数)或者之后几天(正数)
     * @return 返回date类型日期
     */
    public int getBeforeOrAfterDay(Date date,int day){
        calendar=Calendar.getInstance();
        calendar.setTime(date);
        
        return calendar.get(Calendar.DATE)+day;
    }
    
}

 

posted on 2017-01-09 14:08  悲伤穿透眼眸  阅读(149)  评论(0编辑  收藏  举报