从今天(例如星期五10/2020)开始,我必须获得下一个星期五(2020/07/17),所以输出不应是今天。
我还必须从今天(例如,周五10/07/2020)开始的下一个第二个星期一开始,并且输出应为20/07/2020。
如何在VBNet中做到这一点?
提前感谢您的帮助!
答案 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
所以,如果您说:
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,请使用右上角的#按钮