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

时间:2011-05-10 03:13:58

标签: java date calendar

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

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

7 个答案:

答案 0 :(得分:7)

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

  1. 您首先要弄清楚您所在星期的当前日期。您可能需要查看Java的Calendar类,以了解如何执行此操作。
  2. 一旦你得到了你所在的日期,就可以考虑一下模数运算符,以及如何使用它来向前移动以从你当前所在的那一天开始寻找前一天。 (请记住,一周是7天,一周中的每一天在这7天内占用一个“位置”。)
  3. 一旦你有两天的天数,你就要减去。当然,有些类可以在Java框架中为您添加和减去天数......
  4. 我希望有所帮助。我再次鼓励你总是先为自己尝试这个问题。从长远来看,你可以从中学到更多的东西并成为更好的开发者。

答案 1 :(得分:3)

试试这个:

/**
  * 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();
}
祝你好运。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

获取该日期的星期几。看看Calendar javadoc。获得一周中的某一天后,您可以计算出适用于该日期的偏移量。

答案 4 :(得分:1)

我正在使用它:

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();
}

答案 5 :(得分:1)

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

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;
}

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

答案 6 :(得分:0)

//如果您希望在任何日期通过,则从今天的最后四个星期五开始 //只需要调整代码,另一种方法基本上只是以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         function convertDate(inputFormat){         功能垫{return(s< 10)? ' 0' + s:s; }        var d = new Date(inputFormat);         return [pad(d.getDate()),pad(d.getMonth()+ 1),d.getFullYear()]。join(' /');}