1

現在の時間に応じて、お店が実際に開いているかどうかを計算する必要があります。現在までの営業時間は次のTimeSpanとおりです。

public TimeSpan OpeningTime { get; set; }
public TimeSpan ClosingTime { get; set; }

お店が今開いているかどうかを計算するにはどうすればよいですか? いくつか考えてみましたが、解決策はかなり面倒に見えました。TimeSpan1 つの理由は、 と の間で変換する必要があることですDateTimeTimeSpan営業時間の正しい形式はありますか? その時間のための別のクラスはより理にかなっていますか?

注:平日は別扱い

4

5 に答える 5

5

次の場合に開いています。

OpeningTime <= DateTime.Now.TimeOfDay <= ClosingTime
于 2013-03-04T22:21:43.473 に答える
2

aは2 つの時間の差TimeSpanの尺度であり、実際の時間ではありません。

を使用して、午前 0 時を基準TimeSpanした開始時刻と終了時刻を示しているとします。

TimeSpan currentTime = DateTime.Now.TimeOfDay;   
bool isOpen = currentTime > OpeningTime && currentTime < ClosingTime;
于 2013-03-04T22:25:16.783 に答える
0

DateTime.Now.TimeOfDayを使用して、2 つの TimeSpans と比較することができます

    OpeningTime = new TimeSpan(9, 30, 0); // 9:30AM
    ClosingTime = new TimeSpan(17, 30, 0); // 5:30AM

    bool isOpen = DateTime.Now.TimeOfDay >= OpeningTime && DateTime.Now.TimeOfDay <= ClosingTime;
于 2013-03-04T22:26:32.490 に答える
0
TimeSpan OpeningTime = new TimeSpan(8, 0, 0);
TimeSpan ClosingTime = new TimeSpan(16, 0, 0);

TimeSpan now = DateTime.Now - DateTime.Now.Date;

if (now > OpeningTime && now < ClosingTime)
{ 
    //...
}
于 2013-03-04T22:26:35.007 に答える
0

次のようなものを試してください:

var timeOfDay = DateTime.Now.TimeOfDay;
if (timeOfDay >= OpeningTime && timeOfDay < ClosingTime)
{
    // open now!
}
于 2013-03-04T22:23:49.940 に答える