2016-03-31 14 views
3

私のアプリはいくつかの店舗を持っています。いくつかの店舗は午後12時から翌日午前12時まで営業しています。真夜中まで営業している営業時間を保存する正しい方法

私たちの現在のコードの問題は、オープンタイムとクローズ時間を保存することです。つまり、最初の日は午後12時から午後11時59分までですが、翌日はさらに4時間開いています。午後12時に開き、技術的には深夜1分前に終了します。

誰もがこの問題の経験がありますが、これを解決してDBに設定するにはどうしましたか?

+0

コードを変更して、11.59の厄介な回避策を行う必要はありません。たとえば、営業時間終了後に営業時間を設定する必要があるとの検証がある場合、営業時間を終了して営業時間をISとすると、翌営業日を基準にしていると仮定して検証を行い、ロジックを変更します。つまり、現実に合わせてアプリの内部ロジックを変更します。 –

+3

また、開始時刻と終了時刻を保存する代わりに、開始時刻と開始時間を保存するようにデータを変更することもできます。その後、開始時間に継続時間を加算するだけで、終了時間を計算することができます。 –

+0

それは...このデータをどうすればいいですか?ウェブページに時間を表示するだけですか?計算時間?現時点で店舗が機能しているかどうかを判断しますか?他に何か? – dimuch

答えて

1

これと他の数の複雑なケースを解決するには、リレーション、または何らかの形式のコレクションである時間を開くことで利益を得ることができます。

たとえば、9-5から営業していても1時間閉まっている店では、1日の半分をカバーする2つのopen_periodsがあります。

この方法では、店舗は真夜中に始まり午前4時に終了する期間、正午に始まり23:59:59に終了する期間があります。

これを人間が読むことのできる簡単な開き時間文字列の "opening_times"文字列フィールドと組み合わせることをお勧めします。

@MaxWilliamsには、開始時間と継続時間である開始時間の提案が追加されており、あなたは非常に柔軟なシステムを持っています。

1

[start, end]の代わりに[start, duration]を保存してください。

複数の間隔を許可する場合は、ストアごとに複数の間隔を保存します。

+0

ええ、複数の[開始、終了]ペアも機能します – stephenmurdoch

関連する問題