java 获取指定日期的最后一个星期一到星期日

话不多说,直接上代码

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

/**
 * 功能描述:
 * <p/>
 * 版权所有:
 * <p/>
 
 *
 * @author  新增日期:2016-07-12
 * @author  修改日期:2016-07-12
 * @version 1.0.0
 * @since 1.0.0
 */
public class Test {

    public static final SimpleDateFormat FMT_YMD = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) {
       
        getDate(parseDate("2016-06-20", "yyyy-MM-dd"),1);// 1 星期天下标
    }

   

    public static void getDate(Date date,int day){
        int b = day ;//星期几  的下标 ,假如 星期三 ,下标就是4,星期日的下标是1,
        //java实现一个月的最后一个星期天
        Calendar instance = Calendar.getInstance();
        //System.out.println(instance.getTime());
        //System.out.println(instance.get(Calendar.THURSDAY));
        instance.setTime(date);
        instance.add(Calendar.MONTH, 1);//月份+1
        instance.set(Calendar.DAY_OF_MONTH, 1);//天设为一个月的第一天
        //System.out.println(instance.getTime());
        instance.add(Calendar.DAY_OF_MONTH, -1);//本月最后一天
        //System.out.println(instance.getTime());
        int a  = instance.get(Calendar.DAY_OF_WEEK);
        System.out.println("a="+a);
        instance.add(Calendar.DAY_OF_MONTH,
                b - a > 0?-a-(7-b):b-a);//根据月末最后一天是星期几,向前偏移至最近的周几
        //System.out.println(instance.get(Calendar.THURSDAY));
        String date_str = formatDate(instance.getTime(), FMT_YMD);
        System.out.println(date_str);
    }

    public static Date parseDate(String strDate, String pattern)
    {
        SimpleDateFormat df = new SimpleDateFormat(pattern);
        try
        {
            return df.parse(strDate);
        } catch (ParseException e)
        {
            e.printStackTrace();
            return null;
        }
    }

    public static String formatDate(Date date, SimpleDateFormat sdf)
    {
        return sdf.format(date);
    }
}
 

猜你喜欢

转载自zliang186.iteye.com/blog/2312376
今日推荐