0

ジョブ オブジェクトの日付と分の部分をチェックするプログラムがあります。これらが一致すると、特定のジョブがトリガーされます。

   If jb.ScheduledStartTime.Value.ToString("MM/dd/yyyy mm") =
 Now().ToString("MM/dd/yyyy mm") Then
                        'Do some work here.
                    End If

問題: 日中に異なる時間間隔で異なるジョブをスケジュールすると、正常に動作します。つまり、それらはトリガーされ、上記のコードでは、現在の形式と一致するとループに入ります。

ただし、12時に日付が変わる場合は動作しません。朝の午前 9:00 にトリガーするように開始時刻を設定したにもかかわらず、午前 12:00 にちょうどループに入るため、ロジックが無効になり、混乱してしまいます。

なぜこうなった?ここで私の日付と分のチェックロジックは間違っていますか? これを行うより良い方法はありますか?

ここでは正確な秒はチェックしません。分の部分をチェックするだけです。

4

2 に答える 2

2

日替わりなどの確認はしていますか?トリガーされた後、スケジュール開始時刻が正しく変更されていますか。

ところで、時間を文字列として比較しないでください。痛いですし、怪我をします。使用するTimeSpanと、物事がどれくらいの長さだったかを取得できます。

If datetime.now > jb.ScheduledStartTime then
   'Do Some work.
end if 

小切手が必要な場合

dim myDateCheck as Datetime = datetime.now
myDateCheck = myDateCheck.AddSeconds(-myDateCheck.Second)
if myDateCheck > jb.ScheduledStartTime  then
    'Do Some work
end if 
于 2012-05-23T04:59:28.290 に答える