下一个星期五和下一个第二个星期一获取

时间:2020-07-15 03:55:47

标签: vb.net datetime

从今天(例如星期五10/2020)开始,我必须获得下一个星期五(2020/07/17),所以输出不应是今天。

我还必须从今天(例如,周五10/07/2020)开始的下一个第二个星期一开始,并且输出应为20/07/2020。

如何在VBNet中做到这一点?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

尝试一下:

Public Function GetFridaySkippingToday(today As DateTime) As DateTime
    Dim result = today.AddDays(1.0)
    While result.DayOfWeek <> DayOfWeek.Friday
        result = result.AddDays(1.0)
    End While
    Return result
End Function

Public Function GetDayOfWeek(today As DateTime, dayOfWeek As DayOfWeek, skip As Integer) As DateTime
    Dim result = today
    While True
        If result.DayOfWeek = dayOfWeek Then
            If skip = 0 Then
                Exit While
            Else
                skip -= 1
            End If
        End If
        result = result.AddDays(1.0)
    End While
    Return result
End Function

答案 1 :(得分:1)

如果我要对你说:

您处于第10步,我希望您跳至第17步,然后跳至第20步。您的跳动幅度是多少?

你会做什么?

17 - 10 = 7
20 - 17 = 3

现在我说

您处于10到16之间的某个随机步骤。什么过程?

17-随便..

所以您正在用数学解决这个问题


DateTime可以告诉您/为您做几件事:

  • 当前日期DateTime.Now
  • 当前的day of the week作为从0(星期日)到6(星期六)的枚举
  • 如果您add停留几天,那是什么日期

所以,如果您说:

Dim dayNumber = DirectCast(DateTime.Now.DayOfWeek, Integer)

今天它将给您4。到下一个6还要走多远? 2

如果您说:

DateTime.Now.AddDays(2) 

今天是星期五。如果您希望在两天内成为星期五之后的 ,则可以AddDays(7+2)等。您可以猜测如何在此之后到达星期一...

(这有助于将日期看作只是一个数字。每次加1都会增加一天。如果加0.5天会增加12小时等等。您可以像增加数字一样增加日期时间并且您随时可以问“今天是几号?”

然后您要做的就是打印找到的时间


请注意,DateTime.Now也包含时间;您只能真正使用它,而在打印时将其删除。有一个.Date属性,可为您提供一个日期时间,并将其时间设置为午夜,但DateTime始终会包含一个计时器,如果您不需要它,您可以执行以下操作: ToString("yyyy-MM-dd")获取日期的字符串表示形式,而没有时间


我把这种怀疑联系起来了;您可以在那里找到更深入的示例。要将示例的演示更改为VB,请使用右上角的#按钮