If have the following Code:
Public Shared Function GetNextWeekDay() As Date
Dim value As Date = Date.Now
Do
value = value.AddDays(1)
Loop While (value.DayOfWeek = DayOfWeek.Saturday) Or (value.DayOfWeek = DayOfWeek.Sunday)
Return value
End Function
Public Shared Function DPLoadData() As String
Dim s As StringBuilder = New StringBuilder("<head><meta http-equiv=""content-type"" content=""text/html;charset=utf-8"" /><META HTTP-EQUIV=""REFRESH"" CONTENT=""900"">")
s.Append("<style type=""text/css"" media=""all""> body{font-family: Arial;}h4{font-size: 10pt;font-weight: bold;white-space: nowrap;margin-top: 0; margin-bottom: 10px;}")
s.Append("th{font-size: 9pt;font-weight: normal;text-align: center;white-space: nowrap;}td{font-size: 9pt;}.content td{border: solid 1px #dadada;}")
s.Append(".content th {border: solid 1px #dadada;background-image: url(""tbl_header_row_bg.gif""); background-repeat: repeat-x; white-space: nowrap;}</style></head>")
s.Append("<h3>" & "Daily Plan" & "</h3>")
Dim strCurrDay As String = ""
s.Append("<h5>" & strCurrDay & "</h5>")
Dim CurrDateFirstDay As Date = GetNextWeekDay()
strCurrDay = FormatDateTime(CurrDateFirstDay, DateFormat.LongDate)
s.Append("<h5>" & strCurrDay & "</h5>")
s.Append(LoadDataGroupByDate(CurrDateFirstDay))
Return s.ToString()
End Function
The function DPLoadData generates an HTML file with a table and fills it with bookings. Currently, the HTML file displays the bookings of tomorrow (e.g. if today is Monday, it displays the bookings for Tuesday and if today is Friday, it displays the bookings for Monday).
What i need is that the HMTL file gets generated at 5 p.m. For Example: If today is Monday, then the HTML file should be generated Monday at 5 p.m and should display the bookings for Tuesday until Tuesday 5 p.m and Tuesday at 5 p.m the file should be generated for wednesday and should display the bookings for wednesday until wednesday 5 p.m, and so on.
How can i do that? Please help.
My Solution:
Public Shared Function GetNextWeekDay() As Date
Dim value As Date = Date.Now
Dim intHour As Integer
Dim intMinute As Integer
Dim intSecond As Integer
intHour = 17
intMinute = 0
intSecond = 0
Dim newdatetime As DateTime = New Date(value.Year, value.Month, value.Day, intHour, intMinute, intSecond)
If DateTime.Now < newdatetime Then
If value.DayOfWeek = DayOfWeek.Saturday Then
value = value.AddDays(2)
Return value
End If
If value.DayOfWeek = DayOfWeek.Sunday Then
value = value.AddDays(1)
Return value
End If
Return value
ElseIf DateTime.Now > newdatetime Then
Do
value = value.AddDays(1)
Loop While (value.DayOfWeek = DayOfWeek.Saturday) Or (value.DayOfWeek = DayOfWeek.Sunday)
Return value
End If
End Function
As I understand your question, you are basically looking for a way to execute a program at a given time? If so, have a look at cron or the Windows scheduler, depending on the OS you are running this on.
Update: So basically you just need to compare the current time and check whether it is before 5pm. Then you should have a function which return the data from 5pm current day until 5pm tomorrow.
You might want to have a look at this VB tutorial for DateTime. Basically you need to compare the current time with a date time consisting of the current date at 5pm.
Update: Just extend your if condition to also check that today is not Saturday or Sunday. Here’s a little code snippet I just whipped up. I am not really familiar with VB, so this might not be 100% correct, but I think you get the idea.