2016-05-30 16 views
2

データベースに保存された時間範囲に基づいて店舗のオープンまたはクローズ状態を表示しようとしています。現在の時刻が複数の時間範囲にあるかどうかを調べる

各店舗が持つことができる2営業時間

例:

9:00 AM 11:00 AMおよび単一時間10:00 PM

ワークスが1時00分PMに範囲:

IEnumerable<Timings> timings = allStore.ToList(); // from database 

foreach (var storetime in timings) 
{ 
TimeSpan openSpan = TimeSpan.FromTicks((long)storetime.OpenTime); 

TimeSpan openLocalTime = TimeConversions.UTCTimeToLocalTime(openSpan); 

DateTime openDatetime = DateTime.Today.Add(openLocalTime); 

string openDisplayTime = openDatetime.ToString("hh:mm tt"); 

..... 

TimeSpan closeLocalTime = TimeConversions.UTCTimeToLocalTime(closeSpan); 

if ((now > openLocalTime) && (now < closeLocalTime)) 
{       
//Store is Open   
} 

else 
{ 
//Store is Closed 
} 

} 

複数の範囲:

IEnumerable<Timings> timings = allStore.ToList(); // from database 

if((timings.Any(now > d=>d.OpenTime))) // can i use Any ? 
{ 

} 

ここにはtable構造があります。

助けがあれば助かります。

+0

ソリューションはC#でなければなりませんか? IMOでは、すべての開始時間を取得するのではなく、SQLで直接記述する方がよいでしょう。 – martin

+0

あなたのコードを理解できません。なぜ、 'openLocalTime'は' Timespan'であり、 'DateTime'ではありません(近い時間に同じです)。 'TimeConversions.UTCTimeToLocalTime'とは何ですか?どのオブジェクトタイプが' Timings'ですか? – Philippe

+0

@Philippe、私はちょうど[ここで](http://stackoverflow.com/a/8504020/2218697)に記載されているようにダニを使用します。 'BigInt'と 'TimeConversions.UTCTimeToLocalTime'が変換に使用されるようにデータベースにティックを格納しました。 UTCはローカルタイムパンにティック、タイミングは各ストアのタイミングのリスト、私はポストを更新しました。助けてくれることを望む。 – stom

答えて

0

はい、Anyを使用することができます。現在の時刻は、開かれた範囲内にある必要があります。です。

IEnumerable<Timings> timings = allStore.ToList(); // from database 

if(timings.Any(d => (now >= d.OpenTime) && (now <= d.CloseTime))) 
{ 

} 

@martinが示唆したように、データベースでこのクエリを実行する方が良い解決策かもしれません。データベースがどのように見えるのかはわかりませんが、クエリは次のようになります。

bool isOpen = db.Stores 
    .Single(s => s.Id = whatever) 
    .OpeningHours.Any(d => (now >= d.OpenTime) && (now <= d.CloseTime)); 
+0

応答のおかげで、私は 'BigInt'としてデータベースにティックを格納して、私はあなたの最初のメソッドを使用してこのエラーが発生します: 'Operator '> =' 'System.TimeSpan'と 'long? 「私はポストを更新しました。 – stom

+0

次に、DateTimeに変換する必要があります(コンストラクタまたは静的メソッドを持っています)。営業時間が真夜中を越えることができない限り、それはもう少し複雑になります。 –

関連する問題