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中的日期类和方法