欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-17 21:27:24
...

话不多说,直接上代码


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);
    }
}
 
相关标签: java 日期