java 日期各种样式转化函数集合

mport java.text.DateFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

import android.content.Context;

/**
 * 日期时间工具类
 *
 */
public class DateUtil {
    private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");
    private static final SimpleDateFormat datetimeFormat2 = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm");
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd");
    private static final SimpleDateFormat timeFormat = new SimpleDateFormat(
            "HH:mm:ss");
    
    private static final SimpleDateFormat cndateFormat = new SimpleDateFormat(
            "yyyy年MM月dd日");

    /**
     * 获得当前日期时间
     * <p>
     * 日期时间格式yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String currentDatetime() {
        return datetimeFormat.format(now());
    }
    /**
     * 得到本月的第一天
     * @param c
     * @return
     */
    public static boolean is24Hour(Context context){
        return android.text.format.DateFormat.is24HourFormat(context);

    }
    /**
     * @description
     * @param time 日期
     * @return 返回 "yyyy年MM月dd日  HH:mm"这种格式的时间格式
     * @throws ParseException
     */
    public static String formatDateByFormat(String time) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date parse = sdf.parse(time);
        SimpleDateFormat sdfs=new SimpleDateFormat("yyyy年MM月dd日  HH:mm");
        String format = sdfs.format(parse);
        /* GregorianCalendar ca = new GregorianCalendar();
            System.out.println(ca.get(GregorianCalendar.AM_PM));*/
Calendar c=Calendar.getInstance();
c.setTime(parse);
int type=c.get(Calendar.AM_PM);
StringBuilder sb=new StringBuilder();
sb.append(format);
if(type==0){
sb.append("am");
}else{
sb.append("pm");
}
return sb.toString();
    }
    /**
     * @description
     * @param time 日期
     * @return 返回 "MM月dd日  HH:mm pm"这种格式的时间格式
     * @throws ParseException
     */
    public static String formatDateByFormat3(String time) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date parse = sdf.parse(time);
        SimpleDateFormat sdfs=new SimpleDateFormat("MM月dd日  HH:mm");
        String format = sdfs.format(parse);
        Calendar c=Calendar.getInstance();
        c.setTime(parse);
        int type=c.get(Calendar.AM_PM);
        StringBuilder sb=new StringBuilder();
        sb.append(format);
        if(type==0){
        sb.append("am");
        }else{
        sb.append("pm");
        }
        return sb.toString();
        
    }
    /**
     * @description 根据指定的时间返回指定的格式
     * @param pattern 时间格式
     * @param time 要更改的时间
     * @return  返回 指定de这种格式的时间格式
     * @throws ParseException
     */
    public static String formatDateByFormat(String pattern,String time) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date parse = sdf.parse(time);
        SimpleDateFormat sdfs=new SimpleDateFormat(pattern);
        String format = sdfs.format(parse);
        /* GregorianCalendar ca = new GregorianCalendar();
            System.out.println(ca.get(GregorianCalendar.AM_PM));*/
/*Calendar c=Calendar.getInstance();
c.setTime(parse);
int type=c.get(Calendar.AM_PM);
StringBuilder sb=new StringBuilder();
sb.append(format);
if(type==0){
sb.append("am");
}else{
sb.append("pm");
}*/
return format;
    }
    /**
     *
     *@Description:
     *@param time
     *@return  MM/dd HH:mm
     *@throws ParseException
     *@author     : 沈奇超
     * @EditAt    :2013-8-22 上午9:38:59
     */
    public static String formatDateByFormat2(String time) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date parse = sdf.parse(time);
        SimpleDateFormat sdfs=new SimpleDateFormat("MM/dd HH:mm");
        String format = sdfs.format(parse);
        /* GregorianCalendar ca = new GregorianCalendar();
            System.out.println(ca.get(GregorianCalendar.AM_PM));*/
/*Calendar c=Calendar.getInstance();
c.setTime(parse);
int type=c.get(Calendar.AM_PM);
StringBuilder sb=new StringBuilder();
sb.append(format);
if(type==0){
sb.append("am");
}else{
sb.append("pm");format.replace("-", "/")
}*/
return format;
    }
/**
 * @description 获取两个时间的间隔天数
 * @param time1 要比较的时间
 * @param time2 要比较的时间
 * @param pattern 比较的时间格式
 * @return 时间相隔的天数
 */
    public static long getQuot(String time1, String time2,String pattern) {
        long quot = 0;
        SimpleDateFormat ft = new SimpleDateFormat(pattern);
        try {
            Date date1 = ft.parse(time1);
            Date date2 = ft.parse(time2);
            quot = date1.getTime() - date2.getTime();
            quot = quot / 1000 / 60 / 60 / 24;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return quot;
    }
    /**
     * @description 根据指定的时间返回指定的格式
     * @param pattern 时间格式
     * @param time 要更改的时间
     * @return  返回 指定de这种格式的时间格式
     * @throws ParseException
     */
    public static String formatDateByFormat(String pattern,Date time) throws ParseException{
        SimpleDateFormat sdfs=new SimpleDateFormat(pattern);
        String format = sdfs.format(time);
        return format;
/*Calendar c=Calendar.getInstance();
c.setTime(parse);
int type=c.get(Calendar.AM_PM);
StringBuilder sb=new StringBuilder();
sb.append(format);
if(type==0){
sb.append("am");
}else{
sb.append("pm");
}
return sb.toString();*/
    }
public static String firstdayofcurrentmonth(Calendar c){
     c.set( Calendar.DATE,  1 );
     return formatDate(c.getTime());
}
public static String yearmonthweek(){
    Calendar c=Calendar.getInstance();
    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH)+1;
    int week=c.get(Calendar.WEEK_OF_MONTH);
    StringBuilder sb=new StringBuilder();
    sb.append(year);
    sb.append("_");
    sb.append(month);
    sb.append("_");
    sb.append(week);
     return sb.toString();
}
public static String getbeforeday(String time){
    Calendar   c   =   Calendar.getInstance();
    try {
        c.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(time));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    c.add(Calendar.DAY_OF_MONTH, -1);
    String strStart=DateUtil.formatDate(c.getTime());
    return strStart;
}
public static String getlastday(String time){
    Calendar   c   =   Calendar.getInstance();
    try {
        c.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(time));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    c.add(Calendar.DAY_OF_MONTH, 1);
    String strStart=DateUtil.formatDate(c.getTime());
    return strStart;
}
/**
 * 得到本月的第后一天
 * @param c
 * @return
 */
public static String lastdayofcurrentmonth(Calendar c){
 c.set( Calendar.DATE,  1 );
 c.roll(Calendar.DATE,  - 1 );
 return formatDate(c.getTime());
}
//获得下个月第一天的日期
public static String getNextMonthFirst(Calendar lastDate){
      lastDate.add(Calendar.MONTH,1);//减一个月
      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天
       return formatDate(lastDate.getTime());
}
    /**
     * 格式化日期时间
     * <p>
     * 日期时间格式yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String formatDatetime(Date date) {
        return datetimeFormat.format(date);
    }
    /**
     * 格式化日期时间
     * <p>
     * 日期时间格式yyyy-MM-dd HH:mm
     *
     * @return
     */
    public static String formatDatetime2(Date date) {
        return datetimeFormat2.format(date);
    }

    /**
     * 格式化日期时间
     *
     * @param date
     * @param pattern
     *            格式化模式,详见{@link SimpleDateFormat}构造器
     *            <code>SimpleDateFormat(String pattern)</code>
     * @return
     */
    public static String formatDatetime(Date date, String pattern) {
        SimpleDateFormat customFormat = (SimpleDateFormat) datetimeFormat
                .clone();
        customFormat.applyPattern(pattern);
        return customFormat.format(date);
    }

    /**
     * 获得当前日期
     * <p>
     * 日期格式yyyy-MM-dd
     *
     * @return
     */
    public static String currentDate() {
        return dateFormat.format(now());
    }

    /**
     * 获得当前日期
     * <p>
     * 日期格式yyyy-MM-dd HH:mm
     *
     * @return
     */
    public static String currentDateTimeNoSecond() {
        return datetimeFormat2.format(now());
    }
    /**
     * 格式化日期
     * <p>
     * 日期格式yyyy-MM-dd
     *
     * @return
     */
    public static String formatDateTimeNoSecond(Date date) {
        return datetimeFormat2.format(date);
    }
    /**
     * 格式化日期
     * <p>
     * 日期格式yyyy-MM-dd
     *
     * @return
     */
    public static String formatDate(Date date) {
        return dateFormat.format(date);
    }
    
    /**
     * 格式化日期 中文方式
     * <p>
     * 日期格式yyyy年MM月dd日
     *
     * @return
     */
    public static String formatCndate(Date date) {
        return cndateFormat.format(date);
    }

    /**
     * 获得当前时间
     * <p>
     * 时间格式HH:mm:ss
     *
     * @return
     */
    public static String currentTime() {
        return timeFormat.format(now());
    }

    /**
     * 格式化时间
     * <p>
     * 时间格式HH:mm:ss
     *
     * @return
     */
    public static String formatTime(Date date) {
        return timeFormat.format(date);
    }

    /**
     * 获得当前时间的<code>java.util.Date</code>对象
     *
     * @return
     */
    public static Date now() {
        return new Date();
    }

    public static Calendar calendar() {
        Calendar cal = GregorianCalendar.getInstance(Locale.CHINESE);
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        return cal;
    }

    /**
     * 获得当前时间的毫秒数
     * <p>
     * 详见{@link System#currentTimeMillis()}
     *
     * @return
     */
    public static long millis() {
        return System.currentTimeMillis();
    }

    /**
     *
     * 获得当前Chinese月份
     *
     * @return
     */
    public static int month() {
        return calendar().get(Calendar.MONTH) + 1;
    }

    /**
     * 获得月份中的第几天
     *
     * @return
     */
    public static int dayOfMonth() {
        return calendar().get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 今天是星期的第几天
     *
     * @return
     */
    public static int dayOfWeek() {
        return calendar().get(Calendar.DAY_OF_WEEK);
    }

    /**
     * 今天是年中的第几天
     *
     * @return
     */
    public static int dayOfYear() {
        return calendar().get(Calendar.DAY_OF_YEAR);
    }

    /**
     *判断原日期是否在目标日期之前
     *
     * @param src
     * @param dst
     * @return
     */
    public static boolean isBefore(Date src, Date dst) {
        return src.before(dst);
    }

    /**
     *判断原日期是否在目标日期之后
     *
     * @param src
     * @param dst
     * @return
     */
    public static boolean isAfter(Date src, Date dst) {
        return src.after(dst);
    }

    /**
     *判断两日期是否相同
     *
     * @param date1
     * @param date2
     * @return
     */
    public static boolean isEqual(Date date1, Date date2) {
        return date1.compareTo(date2) == 0;
    }

    /**
     * 判断某个日期是否在某个日期范围
     *
     * @param beginDate
     *            日期范围开始
     * @param endDate
     *            日期范围结束
     * @param src
     *            需要判断的日期
     * @return
     */
    public static boolean between(Date beginDate, Date endDate, Date src) {
        return beginDate.before(src) && endDate.after(src);
    }

    /**
     * 获得当前月的最后一天
     * <p>
     * HH:mm:ss为0,毫秒为999
     *
     * @return
     */
    public static Date lastDayOfMonth() {
        Calendar cal = calendar();
        cal.set(Calendar.DAY_OF_MONTH, 0); // M月置零
        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零
        cal.set(Calendar.MINUTE, 0);// m置零
        cal.set(Calendar.SECOND, 0);// s置零
        cal.set(Calendar.MILLISECOND, 0);// S置零
        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);// 月份+1
        cal.set(Calendar.MILLISECOND, -1);// 毫秒-1
        return cal.getTime();
    }

    /**
     * 获得当前月的第一天
     * <p>
     * HH:mm:ss SS为零
     *
     * @return
     */
    public static Date firstDayOfMonth() {
        Calendar cal = calendar();
        cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1
        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零
        cal.set(Calendar.MINUTE, 0);// m置零
        cal.set(Calendar.SECOND, 0);// s置零
        cal.set(Calendar.MILLISECOND, 0);// S置零
        return cal.getTime();
    }

    private static Date weekDay(int week) {
        Calendar cal = calendar();
        cal.set(Calendar.DAY_OF_WEEK, week);
        return cal.getTime();
    }

    /**
     * 获得周五日期
     * <p>
     * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
     *
     * @return
     */
    public static Date friday() {
        return weekDay(Calendar.FRIDAY);
    }

    /**
     * 获得周六日期
     * <p>
     * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
     *
     * @return
     */
    public static Date saturday() {
        return weekDay(Calendar.SATURDAY);
    }

    /**
     * 获得周日日期
     * <p>
     * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
     *
     * @return
     */
    public static Date sunday() {
        return weekDay(Calendar.SUNDAY);
    }

    /**
     * 将字符串日期时间转换成java.util.Date类型
     * <p>
     * 日期时间格式yyyy-MM-dd HH:mm:ss
     *
     * @param datetime
     * @return
     */
    public static Date parseDatetime(String datetime) throws ParseException {
        return datetimeFormat.parse(datetime);
    }

    /**
     * 将字符串日期转换成java.util.Date类型
     *<p>
     * 日期时间格式yyyy-MM-dd
     *
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseDate(String date) throws ParseException {
        return dateFormat.parse(date);
    }

    /**
     * 将字符串日期转换成java.util.Date类型
     *<p>
     * 时间格式 HH:mm:ss
     *
     * @param time
     * @return
     * @throws ParseException
     */
    public static Date parseTime(String time) throws ParseException {
        return timeFormat.parse(time);
    }

    /**
     * 根据自定义pattern将字符串日期转换成java.util.Date类型
     *
     * @param datetime
     * @param pattern
     * @return
     * @throws ParseException
     */
    public static Date parseDatetime(String datetime, String pattern)
            throws ParseException {
        SimpleDateFormat format = (SimpleDateFormat) datetimeFormat.clone();
        format.applyPattern(pattern);
        return format.parse(datetime);
    }
    /**
     * @return the long value of {@link System#currentTimeMillis()}
     */
    public static long getCurrentTimeMillis() {
        return Long.valueOf(System.currentTimeMillis());
    }
    
    /**
     *
     * @param context
     * @param date 传入参数为时间字符串,格式为: yyyy-MM-dd HH:mm:ss,比如 2012-08-06 12:12:12
     * @return 根据传入的时间字符串判断是今天,昨天还是更早
     * @throws ParseException
     */
    public static String getDay(Context context,String date) {
        //2012-08-06 12:12:12
        
        try {
            String current = currentDate();
            
            Date currentDate = (Date) dateFormat.parse(current);
            Date date2 = (Date) dateFormat.parse(date.substring(0,10));
            
            if (currentDate.hashCode() - date2.hashCode() == 0 ) {
                return "今天";
            } else if (currentDate.hashCode() - date2.hashCode() > 0 && currentDate.hashCode() - date2.hashCode() <= 86400000) {
                return "昨天";
            } else if (currentDate.hashCode() - date2.hashCode() < 0) {
//                return context.getString(R.string.from_future);
                return "更早";
            }else {
                return "更早";
            }
        } catch (ParseException e) {
            return date;
        }
    }
    //用来全局控制 上一周,本周,下周以及的周数变化


    /**
        * 得到二个日期间的间隔天数
        */
    public static String getTwoDay(String sj1, String sj2) {
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
        long day = 0;
        try {
         java.util.Date date = myFormatter.parse(sj1);
         java.util.Date mydate = myFormatter.parse(sj2);
         day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
        } catch (Exception e) {
         return "";
        }
        return day + "";
    }

    //获取当月第一�?
    public static String getFirstDayOfMonth( Calendar lastDate){  
       String str = "";
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    
       lastDate.set(Calendar.DATE,1);//设为当前月1
       str=sdf.format(lastDate.getTime());
       return str;  
    }
    /**
        * 根据字符串日期,返回是星期几的字符
        *
        * @param sdate
        * @return
        */
    public static String getWeek(String sdate) {
        // 再转换为时间
//        Date date = DataFLDay.strToDate(sdate);
         Date date =strToDate(sdate);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        // int hour=c.get(Calendar.DAY_OF_WEEK);
        // hour中存的就是星期几了,其范围1~7
        // 1=星期7=星期六,其他类推
        return new SimpleDateFormat("EEEE").format(c.getTime());
    }

    /**
        * 将短时间格式字符串转换为时间 yyyy-MM-dd
        *
        * @param strDate
        * @return
        */
    public static Date strToDate(String strDate) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        ParsePosition pos = new ParsePosition(0);
        Date strtodate = formatter.parse(strDate, pos);
        return strtodate;
    }

    /**
        * 两个时间之间的天�?
        *
        * @param date1
        * @param date2
        * @return
        */
    public static long getDays(String date1, String date2) {
        if (date1 == null || date1.equals(""))
         return 0;
        if (date2 == null || date2.equals(""))
         return 0;
        // 转换为标准时�?
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date date = null;
        java.util.Date mydate = null;
        try {
         date = myFormatter.parse(date1);
         mydate = myFormatter.parse(date2);
        } catch (Exception e) {
        }
        long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
        return day;
    }



    
    // 计算当月�?���?��,返回字符�?
    public static String getDefaultDay(){  
       String str = "";
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

       Calendar lastDate = Calendar.getInstance();
       lastDate.set(Calendar.DATE,1);//设为当前月的1�?
       lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1�?
       lastDate.add(Calendar.DATE,-1);//减去�?��,变为当月最后一�?
       
       str=sdf.format(lastDate.getTime());
       return str;  
    }
    
    // 上月第一�?
    public static String getPreviousMonthFirst(){  
       String str = "";
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

       Calendar lastDate = Calendar.getInstance();
       lastDate.set(Calendar.DATE,1);//设为当前月的1�?
       lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1�?
       //lastDate.add(Calendar.DATE,-1);//减去�?��,变为当月最后一�?
       
       str=sdf.format(lastDate.getTime());
       return str;  
    }
    
    //获取当月第一�?
    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;  
    }
    
    // 获得本周星期日的日期  
    public static String getCurrentWeekday() {
          int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        weeks = 0;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus+6);
        Date monday = currentDate.getTime();
        
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }
    
    
    //获取当天时间
    public static String getNowTime(String dateformat){
        Date   now   =   new   Date();   
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat(dateformat);//可以方便地修改日期格�?  
        String  hehe  = dateFormat.format(now);   
        return hehe;
    }
    
    // 获得当前日期与本周日相差的天�?
    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;
        }
    }
    
    //获得本周�?��日期
    public static String getMondayOFWeek(){
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
         weeks = 0;
         int mondayPlus = getMondayPlus();
         GregorianCalendar currentDate = new GregorianCalendar();
         currentDate.add(GregorianCalendar.DATE, mondayPlus);
         Date monday = currentDate.getTime();
         
         DateFormat df = DateFormat.getDateInstance();
         String preMonday = df.format(monday);
         return preMonday;
    }
    
  //获得相应周的周六的日�?
    public static String getSaturday() {
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        int mondayPlus =getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }
    
 // 获得上周星期日的日期
    public static String getPreviousWeekSunday() {
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        weeks=0;
        weeks--;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

 // 获得上周星期�?��日期
    public static String getPreviousWeekday() {
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        weeks--;
        int mondayPlus =getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }
    
    // 获得下周星期�?��日期
    public static String getNextMonday() {
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        weeks++;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }
    
 // 获得下周星期日的日期
    public static String getNextSunday() {
        
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }
    
    
    
    private static int getMonthPlus(){
         int weeks = 0;
         int MaxDate;//�?���?��天数
         int MaxYear;//�?���?��天数
        Calendar cd = Calendar.getInstance();
        int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);
        cd.set(Calendar.DATE, 1);//把日期设置为当月第一�?
        cd.roll(Calendar.DATE, -1);//日期回滚�?��,也就是�?���?��
        MaxDate=cd.get(Calendar.DATE);
        if(monthOfNumber == 1){
            return -MaxDate;
        }else{
            return 1-monthOfNumber;
        }
    }
    
  //获得上月�?���?��的日�?
    public static String getPreviousMonthEnd(){
        String str = "";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

        Calendar lastDate = Calendar.getInstance();
       lastDate.add(Calendar.MONTH,-1);//减一个月
       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一�?
       lastDate.roll(Calendar.DATE, -1);//日期回滚�?��,也就是本月�?���?��
        str=sdf.format(lastDate.getTime());
        return str;  
    }
    
  //获得下个月第�?��的日�?
    public static String getNextMonthFirst(){
        String str = "";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

        Calendar lastDate = Calendar.getInstance();
       lastDate.add(Calendar.MONTH,1);//减一个月
       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一�?
        str=sdf.format(lastDate.getTime());
        return str;  
    }
/*    //获得下个月第�?��的日�?
    public static String getNextMonthFirst(Calendar lastDate){
        String str = "";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    
       lastDate.add(Calendar.MONTH,1);//减一个月
       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一�?
        str=sdf.format(lastDate.getTime());
        return str;  
    }*/
  //获得下个月最后一天的日期
    public static String getNextMonthEnd(){
        String str = "";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

        Calendar lastDate = Calendar.getInstance();
       lastDate.add(Calendar.MONTH,1);//加一个月
       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一�?
       lastDate.roll(Calendar.DATE, -1);//日期回滚�?��,也就是本月�?���?��
        str=sdf.format(lastDate.getTime());
        return str;  
    }
    
    //获得明年�?���?��的日�?
    public static String getNextYearEnd(){
        String str = "";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

       Calendar lastDate = Calendar.getInstance();
       lastDate.add(Calendar.YEAR,1);//加一个年
       lastDate.set(Calendar.DAY_OF_YEAR, 1);
      lastDate.roll(Calendar.DAY_OF_YEAR, -1);
        str=sdf.format(lastDate.getTime());
        return str;  
    }
    
  //获得明年第一天的日期
    public static String getNextYearFirst(){
        String str = "";
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");    

        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR,1);//加一个年
        lastDate.set(Calendar.DAY_OF_YEAR, 1);
           str=sdf.format(lastDate.getTime());
        return str;  
        
    }
    
  //获得本年有多少天
    private static int getMaxYear(){
        Calendar cd = Calendar.getInstance();
        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第�?��
        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天�?
        int MaxYear = cd.get(Calendar.DAY_OF_YEAR);    
        return MaxYear;
    }
    
    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;
        }
    }
  //获得本年第一天的日期
    public static String getCurrentYearFirst(){
        int yearPlus =getYearPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE,yearPlus);
        Date yearDay = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preYearDay = df.format(yearDay);
        return preYearDay;
    }
    
    
  //获得本年�?���?��的日�?*
    public static String getCurrentYearEnd(){
        Date date = new Date();
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格�?  
        String  years  = dateFormat.format(date);   
        return years+"-12-31";
    }
    
    
  //获得上年第一天的日期 *
    public static String getPreviousYearFirst(){
        Date date = new Date();
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格�?  
        String  years  = dateFormat.format(date); int years_value = Integer.parseInt(years);  
        years_value--;
        return years_value+"-1-1";
    }
    
  //获得上年�?���?��的日�?
    public static String getPreviousYearEnd(){
         int weeks = 0;
         int MaxDate=0;//�?���?��天数
         int MaxYear=0;//�?���?��天数
        weeks--;
        int yearPlus = getYearPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));
        Date yearDay = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preYearDay = df.format(yearDay);
        getThisSeasonTime(11);
        return preYearDay;
    }
    
  //获得本季�?
    public static String getThisSeasonTime(int month){
        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);
        int end_days = getLastDayOfMonth(years_value,end_month);
        String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;
        return seasonDate;
        
    }
    
    /**
     * 获取某年某月的最后一�?
     * @param year �?
     * @param month �?
     * @return �?���?��
     */
   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;
   }
   /**
    * 是否闰年
    * @param year �?
    * @return
    */
  public static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值