2
    Dim time As String = TimeOfDay.ToString("tt")
    Dim time2 As Integer = TimeOfDay.ToString("hh:mm:ss")
    If time = ("du.") Then
        timehre = (time2 + 12)
        Debug.WriteLine("munkaidoben")
    Else
        Debug.Write("munkaidoben = false")
        timehre = time
    End If

    For munkaido As Integer = 13 To 19

        If time2.ToString.Contains(munkaido) Then
            duplaar = False
        Else
            duplaar = True
        End If
    Next

Timehre は既に integrer として宣言されています。したがって、UTC +1 で時間を取得するには、時間が 13:00 - 19:00 の範囲内にある場合は真のブール値を返し、範囲内にない場合は13:00 - 19:00 その後、偽のブール値を返します。

Ps 下手な英語で申し訳ありませんが、私の質問を理解していただければ幸いです。

4

2 に答える 2

0

私は最近、似たようなことを達成しなければなりませんでした。これが私が思いついたものです。

Public Function GetHoursSinceMidnight(ByVal dDateTime As DateTime) As Double
    Dim myTimeSpan As TimeSpan = dDateTime - dDateTime.Date
    Return myTimeSpan.TotalHours
End Function

Public Function IsTimeInRange(ByVal dDateTime As DateTime, ByVal dStartTime As Double, ByVal dEndTime As Double) As Boolean
    Dim dTime As Double = GetHoursSinceMidnight(dDateTime)
    Return dTime >= dStartTime AndAlso dTime <= dEndTime
End Function

したがって、現在の時刻が世界時間の午後 1 時から午後 7 時までに 1 時間を加えた時間であるかどうかを確認するには、次のように呼び出します。

IsTimeInRange(DateTime.Now.ToUniversalTime.AddHours(1), 13, 19)

現在の時刻が午後 1 時から午後 7 時の間にある場合は True を返し、範囲外の場合は False を返します。

于 2016-11-13T11:15:38.767 に答える
0

まず、オンにしOption Strictます。

Dim time2 As Integer = TimeOfDay.ToString("hh:mm:ss")
...
For munkaido As Integer = 13 To 19
    If time2.ToString.Contains(munkaido) Then

Option Strictこれは、おもちゃのプログラム以外では、使用しないことが非常に悪い考えである理由の良い例です。時刻が「10:45:23」の場合、結果time249! それはどこから来ましたか?文字列の最初の文字 のASCII 値です。

後で、コードはテキスト"49"に 13 から 19 が含まれているかどうかをテストしますが、これは決して真ではありません。変換が行われると、 は と の間にtime2しか存在できません。文字列に整数を含めることはできないため、構文的には無効です。"48""57"

使用しOption Strictないと、この種の不要な変換やバグが発生する可能性があります。意味を推測するためにコンパイラを放置しないでください:
Tools -> Options -> Projects and Solutions -> VB Defaults -> Option Strict On


あなたのコードは、時間が範囲内にあるかどうかを実際にテストしていません.13-19が文字列のどこかに現れるかどうかだけです. 分または秒がこれらの値の 1 つである場合、検証されます。

操作を行うために文字列を使用しないでくださいDateTimeDateTimeタイプには、使用できるプロパティの完全なセットがあります。

Dim dt = DateTime.Now

If dt.Hour >= 13 AndAlso (dt.Hour <= 18 OrElse
                         (dt.Hour = 19 AndAlso dt.Minute = 0)) Then
    Return True
Else
    Return False
End If

このコード、19 時間目である 19:01 または 19:59 を検出するために、時間が単なる時間ではなく 13:00 と 19:00 の間であるかどうかをテストしますが、分は 19:00 の後に置かれます。分がチェックされます。

DateTimeUTC がどのように機能するかはわかりませんが、メソッドを使用することも簡単です。

Dim dt = DateTime.Now.ToUniversalTime()

1 時間を追加するには:

Dim dt = DateTime.Now.ToUniversalTime.AddHours(1)
于 2016-11-12T14:19:06.387 に答える