0

C#で1日の特定の時間に実行する関数を設定しようとしています。このコードは機能しているようですが、私はそれほど自信がありません。これを回避するより良い方法はありますか?

これは私のコードです

String thetimeis = DateTime.Now.ToString("HH:mm:ss");
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00");
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00");

if (Convert.ToDateTime(thetimeis) > alarmtimeStart && Convert.ToDateTime(thetimeis) < alarmtimeStop)
{
  MessageBox.Show(thetimeis);
}
4

4 に答える 4

4

ジョブをスケジュールするためのより堅牢なソリューションを探している場合は、Quartzを使用することをお勧めします。些細な仕事の場合、それはおそらくやり過ぎですが、私は自分のソリューションを展開するよりも使いやすく、はるかに簡単であることがわかりました。

于 2012-05-05T18:34:16.553 に答える
2

はい、もっと良い方法があります。時間、分、秒を個別に比較するだけです。

DateTime now = DateTime.Now;
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00");
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00");

if (now.Hour >= alarmtimeStart.Hour && now.Minute >= alarmtimeStart.Minute && now.Second >= alarmtimeStart.Second && now.Hour <= alarmtimeStop.Hour && now.Minute <= alarmtimeStop.Minute && now.Second <= alarmtimeStop.Second)
{
    MessageBox.Show(thetimeis);
}
于 2012-05-05T18:30:34.713 に答える
2

日付のTimeOfDayプロパティを直接比較することはできませんか?

編集:

TimeSpan thetimeis = DateTime.Now.TimeOfDay;
TimeSpan alarmtimeStart = new TimeSpan(12, 0, 0);
TimeSpan alarmtimeStop = new TimeSpan(12, 2, 0);

if (thetimeis >= alarmtimeStart && thetimeis < alarmtimeStop)
{
   MessageBox.Show(thetimeis);
}
于 2012-05-05T18:40:05.737 に答える
1

なぜそんなに多くの変換が必要なのか私は少し混乱しています、それは次の方が良いのではないですか?

if (DateTime.Now > alarmtimeStart && DateTime.Now < alarmtimeStop) 
{ 
  MessageBox.Show(thetimeis); 
} 
于 2012-05-05T18:38:48.433 に答える