话不多说,直接上代码
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); } }
?
原文:http://zliang186.iteye.com/blog/2312376