如何从指定日期获取上周五的日期?

如何查找上一个(上一个)“星期五”的日期或指定日期的任何其他日期?

public getDateOnDay(Date date, String dayName) { // ? } 

我不会给出答案(先自己尝试一下!),但是,也许这些提示可以帮助你。

  1. 您首先需要弄清楚您当周的当天。 您可能需要查看Java的Calendar类,以了解如何执行此操作。
  2. 一旦你得到你所在的日期,考虑模数运算符以及如何使用它来向前移动以从你当前所在的那一天开始寻找你正在寻找的前一天。 (请记住,一周是7天,一周中的每一天在这7天内占用一个“位置”。)
  3. 一旦你有两天之间的天数,你会想要减去。 当然,有些类可以在Java框架中为您添加和减去天数…

我希望有所帮助。 我再次鼓励你总是先为自己尝试这个问题。 从长远来看,您可以从中学到更多,并成为更好的开发人员。

试试这个:

 /** * Return last day of week before specified date. * @param date - reference date. * @param day - DoW field from Calendar class. * @return */ public static Date getDateOnDay(Date date, int day) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.WEEK_OF_YEAR, -1); cal.set(Calendar.DAY_OF_WEEK, day); return cal.getTime(); } 

祝你好运。

这是一个蛮力的想法。 检查当前日期是否是星期五 。 如果没有,从今天开始减1天。 检查新日期是否是星期五 。 如果没有,从新的日期减1天……等等……你明白了。

获取该日期的星期几。 看看Calendar javadoc。 获得星期几后,您可以计算要应用于日期的偏移量。

我正在使用这个:

 private Date getDateOnDay(Date date, int day) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.setFirstDayOfWeek(day); cal.set(Calendar.DAY_OF_WEEK, day); return cal.getTime(); } 

根据工作日获取最新日期:

 private String getWeekDayDate(String weekday){ DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Calendar start = Calendar.getInstance(); Date now = new Date(); start.setTime(now); Calendar end = Calendar.getInstance(); end.add(Calendar.DATE, -7); while (start.after(end)) { try { Date temp = start.getTime(); String day = new SimpleDateFormat("EEEE").format(temp); if(day.equalsIgnoreCase(weekday)) return formatter.format(temp); }catch(Exception e) { e.printStackTrace(); } start.add(Calendar.DAY_OF_YEAR, -1); } return null; } 

要获得最新的星期五日期,请将工作日视为“星期五”

//如果你想要在任何日期传递//得到最后四个星期五//只需要调整代码,另一种方法基本上只是以dd / MM / YYYY格式格式化日期。 function GetLastFourFridays(){today = new Date(); LastFridayDate = new Date();

  LastFridayDate.setDate(LastFridayDate.getDate() - 1); while (LastFridayDate.getDay() != 5) { LastFridayDate.setDate(LastFridayDate.getDate() - 1); } var lfd = LastFridayDate lfd = convertDate(lfd) document.getElementById("first_week_th").innerHTML = lfd LastFridayDate.setDate(LastFridayDate.getDate() - 1); var friLastWeek = LastFridayDate while (friLastWeek.getDay() != 5) { friLastWeek.setDate(friLastWeek.getDate() - 1); } var flw = friLastWeek flw = convertDate(flw) document.getElementById("second_week_th").innerHTML = flw friLastWeek.setDate(friLastWeek.getDate() - 1); var friTwoWeeks = friLastWeek while (friTwoWeeks.getDay() != 5) { friTwoWeeks.setDate(friTwoWeeks.getDate() - 1); } var ftw = friTwoWeeks ftw = convertDate(ftw) document.getElementById("third_week_th").innerHTML = ftw friTwoWeeks.setDate(friTwoWeeks.getDate() - 1); var friThreeWeeks = friTwoWeeks while (friThreeWeeks.getDay() != 5) { friThreeWeeks.setDate(friThreeWeeks.getDate() - 1); } var ftww = friThreeWeeks ftww = convertDate(ftww) document.getElementById("fourth_week_th").innerHTML = ftww } 

//召集日期00 // 00 // 0000函数convertDate(inputFormat){function pad(s){return(s <10)? '0'+ s:s; } var d = new Date(inputFormat); return [pad(d.getDate()),pad(d.getMonth()+ 1),d.getFullYear()]。join('/');}