【问题标题】:How to get date of last Friday from specified date? [duplicate]如何从指定日期获取上周五的日期? [复制]
【发布时间】:2011-05-10 03:13:58
【问题描述】:

我怎样才能找到上一个(前一个)“星期五”的日期或从指定日期开始的任何其他日期?

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

【问题讨论】:

  • 好吧,我会说你被困住了。你没有任何代码。如果您需要帮助,请先尝试一下。您更有可能获得有用的答案。

标签: java date calendar


【解决方案1】:

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

  1. 您首先需要确定您所在的星期几。您可能想看看 Java 的 Calendar 类,以了解如何做到这一点。
  2. 一旦你得到你所在的日期,想想模数运算符,以及如何使用它向后移动,从你当前所在的那一天开始找到你正在寻找的前一天。 (请记住,一周有 7 天,一周中的每一天在这 7 天中占据一个“空档”。)
  3. 一旦确定了中间的天数,就需要减去。当然,Java框架中也有可以为你加减天数的类……

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

【讨论】:

  • +1 表示耐心、提供信息和鼓励。
  • 感谢 Jas...我尝试并得到了解决方案...:)
  • @yakub_moriss - 太棒了!很高兴听到。我在这个问题中所做的,将来尝试 - 在编写任何代码行之前先写出过程。这往往有助于清理问题空间。另外,如果我的回答对您有所帮助,我将不胜感激。 :-) 谢谢!
【解决方案2】:

这是一个蛮力的想法。检查当前日期是否为星期五。如果不是,则从今天开始减去 1 天。检查新日期是否为星期五。如果没有,请从新日期中减去 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();
    }
    

    祝你好运。

    【讨论】:

      【解决方案4】:

      我正在使用这个:

      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】:

        获取日期的星期几。查看日历 javadoc。一旦你有了星期几,你就可以计算一个偏移量来应用到日期。

        【讨论】:

          【解决方案6】:

          要获取基于工作日的任何最新日期:

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

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

          【讨论】:

            【解决方案7】:

            //如果要传入任意日期,则获取从今天开始的最后四个星期五 //只需要调整代码,其他方法基本上只是将日期格式化为 dd/MM/YYYY 格式。 函数GetLastFourFridays() { 今天=新日期(); 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 函数转换日期(输入格式){ 功能垫{返回(s

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-05-12
              • 2021-09-29
              • 1970-01-01
              • 2014-03-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-09-16
              相关资源
              最近更新 更多