0

次のコードがある場合:

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

関数DPLoadDataは、テーブルを含むHTMLファイルを生成し、それを予約で埋めます。現在、HTMLファイルには明日の予約が表示されます(たとえば、今日が月曜日の場合は火曜日の予約が表示され、今日が金曜日の場合は月曜日の予約が表示されます)。

必要なのは、HMTLファイルが午後5時に生成されることです。例:今日が月曜日の場合、HTMLファイルは月曜日の午後5時に生成され、火曜日から火曜日の午後5時までと火曜日の午後5時までの予約が表示されます。水曜日に生成され、水曜日の予約を水曜日の午後5時まで表示する必要があります。

どうやってやるの?助けてください。

私の解決策:

 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
4

1 に答える 1

1

あなたの質問を理解しているように、あなたは基本的に特定の時間にプログラムを実行する方法を探していますか? その場合は、これを実行している OS に応じて、cronまたはWindows スケジューラーを調べてください。


更新: 基本的には、現在の時刻を比較して、午後 5 時より前かどうかを確認するだけです。次に、当日の午後 5 時から明日の午後 5 時までのデータを返す関数が必要です。

この VB チュートリアルの DateTime をご覧になることをお勧めします。基本的に、現在の時刻を、現在の日付の午後 5 時で構成される日付時刻と比較する必要があります。


更新: if 条件を拡張して、今日が土曜日でも日曜日でもないことも確認してください。これは、私が作成した小さなコードスニペットです。私は VB にあまり詳しくないので、これは 100% 正しいとは言えないかもしれませんが、おわかりいただけると思います。

Public 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 value.DayOfWeek <> DayOfWeek.Saturday And value.DayOfWeek <> DayOfWeek.Sunday And DateTime.Now < newdatetime Then
        Return value.Date
    Else
        Do
            value = value.AddDays(1)
        Loop While (value.DayOfWeek = DayOfWeek.Saturday) Or (value.DayOfWeek = DayOfWeek.Sunday)
        Return value.Date
    End If
End Function
于 2012-12-04T10:32:18.370 に答える