Ich versuche zu zeigen, offen oder geschlossen Status für den Speicher basierend auf Zeitbereich in der Datenbank gespeichert.Finden Sie, ob die aktuelle Zeit zwischen mehreren Zeitbereichen liegt
Jeder Speicher kann 2 Öffnungszeiten hat
Beispiel:
9.00 Uhr bis bis 11:00 Uhr und von 13.00 bis 22.00
Werken für einzelnes Mal Bereich:
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
}
}
Mehrere Bereiche:
Hier ist table Struktur.
Jede Hilfe wäre großartig.
Muss die Lösung in C# sein? IMO wäre es besser, es direkt in SQL zu schreiben, anstatt alle Öffnungszeiten abzurufen. – martin
Ich verstehe Ihren Code nicht. Warum ist 'openLocalTime' eine' Zeitspanne 'und keine 'DateTime' (das gleiche gilt für kurze Zeit). Was ist 'TimeConversions.UTCTimeToLocalTime' und welcher Objekttyp ist' Timings'? – Philippe
@Philippe, ich benutze nur die Ticks wie erwähnt [hier] (http://StackOverflow.com/a/8504020/2218697) Ich habe Ticks in der Datenbank als 'BigInt' gespeichert und 'TimeConversions.UTCTimeToLocalTime' wird verwendet, um zu konvertieren UTC tickt auf lokale Zeitspanne, Timings ist eine Liste der Timings für jedes Geschäft, ich habe den Beitrag aktualisiert. Ich hoffe, das hilft. – stom