【问题标题】:How do I get next Thursday from a random date?如何从随机日期获得下周四?
【发布时间】:2012-06-29 01:41:41
【问题描述】:

我想做的是让你有一个随机日期列表,它永远不会相同,所以它必须是一个通用公式,但是你得到任何日期,一年中的任何日期,然后每个星期四是新的一周开始。对于每个日期,您将日期设置为大于上一个且小于星期四的星期四。

由于我含糊不清,请举例说明,假设您得到 2012 年 6 月 24 日。6 月 24 日大于 2012 年 6 月 21 日(即上一个星期四),小于 2012 年 6 月 28 日,即下一个周四。这意味着它应该在其旁边的列中生成 2012 年 6 月 28 日的值。

这有意义吗?根据您获得的任何日期值,您计算它应该生成哪个星期四日期?有什么办法可以在excel中做到这一点?

【问题讨论】:

  • 也许如果您提供更多示例,我们可以更好地了解您想要什么。
  • 您想要一个随机日期来定义每周从周四到周四的周数吗?或者您想要一个随机日期,那么下一个日期应该是下一个星期四?然后重复?

标签: excel calendar excel-formula


【解决方案1】:

此公式将为您提供 A1 中某个日期之后的星期四

=A1+7-WEEKDAY(A1+2)

如果 A1 是星期四,则返回该日期,如果 A1 是星期四,则应为 A1+7,则更改为该版本

=A1+8-WEEKDAY(A1+3)

【讨论】:

    【解决方案2】:
    =IF(WEEKDAY(A1) < 5, A1+5-WEEKDAY(A1), A1+5+7-WEEKDAY(A1))
    

    将从 Excel 中单元格 A1 中给出的日期开始为您提供下一个星期四。如果输入的日期是星期四,它将给出下一个星期四。

    如果您想在给定星期四时显示输入星期四,而不是显示下一个星期四,则在条件中使用

    【讨论】:

      【解决方案3】:

      我知道这个问题已经得到了完美的回答,但是我只想分享一些代码,这些代码可能会帮助那些正在寻找比“星期四”或“星期二”更强大的东西的人。而是想向函数传递一个日期和日期名称,并取回下一个发生的日期。它是一个两部分功能

          Function nextDateofDay(ByVal xdate As Date, ByVal dayOfWeek As String) As 
           Date
            dow = findWeekDayNum(dayOfWeek)
            nextDayofWeek = xdate + 7 - Weekday(xdate + 7 - dow)
      
           End Function
      
      
      
           Function findWeekDayNum(ByVal dayName As String)
              dayName = Trim(UCase(dayName))
              daysOfWeek = Array("SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", 
                                  "THURSDAY", "FRIDAY", "SATURDAY")
              'Need to find the day of week of that name, so looping through array
              For j = LBound(daysOfWeek) To UBound(daysOfWeek)
                   If daysOfWeek(j) = dayName Then
                       findWeekDayNum = j + 1 ' need to add one cause array index 
                           'starts at 1
                       Exit Function
                    End If
              Next j
      
           End Function
      

      然后如何使用一个将简单地使用该功能

         sub test()
             currentDate = now() ' or can be a date from a cell
             dayDesired = "MONDAY" ' or can also be from a cell
             nextDate = nextDateofDay(currentDate,dayDesired)
             debug.print(nextDate)
         end sub 
      

      【讨论】:

        【解决方案4】:

        对于新的 Java 8 Time API,您可以使用以下代码。您需要在下面的代码中更改DayOfWeek.THURSDAY等。

        LocalDate date1=LocalDate.now();
        // This will give you int value of Day(for eg. Friday) and the date you want to check for
        
        int duration=DayOfWeek.WEDNESDAY.getValue()-date1.getDayOfWeek().getValue();
        System.out.println("duration "+duration);
        if(date1.getDayOfWeek().equals(DayOfWeek.WEDNESDAY)) {
            System.out.println("Wednesday");
        } else {
            date1=date1.plusDays(7).minusDays(7-  duration); 
        }
        // it will first give next day of week then minus the duration from 7.
        
        System.out.println("new date1 "+date1);
        

        【讨论】:

          猜你喜欢
          • 2017-01-08
          • 1970-01-01
          • 1970-01-01
          • 2020-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-14
          相关资源
          最近更新 更多