2011-08-30 43 views
0

我'寫了一個程序,存儲在數據庫time字段中的商店的開放時間,並想知道什麼是正確的時間範圍,如果我想表達一個商店24小時營業的特定日子。是0:00-23:59嗎?還是0:01-0:00?這兩種格式在商店關閉時都有一分鐘的差距。是0:00-0:00嗎? 當一天開始時,會出現與語言環境有關的差異嗎?存放一整天的開放時間(24小時)

+2

你的用例是什麼? – MPelletier

+0

在我的程序中,我有函數'is_open(datetime)'獲取datetime的日期部分(這是99%的情況下的cureent時間),將它與db的關閉時間相結合,並返回datetime chiborg

回答

0

該條件本身並不適合您的存儲概念,但由於您對完成的任務有很多無效值(結束<開始,結束==開始),因此提名任何一個他們。因此,例如,使用0:00 - 0:00並在思想上決定結束>開始,因此這必須代表一整天。 0:00 - 23:59具有合法的意義,所以我會避免這一點。

另一種選擇是使用開始時間+長度而不是兩次。我想我會選擇這個偏好。

我認爲這一開始並不相關;如果您保持數據存儲和表示層獨立,那麼您可以在表示層進行本地化(即在打印時間時),並且數據存儲在一天開始時不會在意(因此使用UTC或存儲時區)。

關於實施的一個注意事項:您缺乏一家商店每天開兩次(例如午餐時間)或更多的方法。

0

根據您的數據庫引擎,這可能會持續幾秒鐘,以便您的商店從00:00:00開放到23:59:59。那麼1秒的重疊並不算太壞。

在處理這個問題時,最重要的是要記住一些商店會24小時營業,但是在某個特定時間開始營業。例如,在上午6點到第二天上午6點。

存儲它的一種方法是將打開時間設置爲某種時間範圍,也許只是打開時間之後的秒數。這樣,你可以有24600小時的84600。

1

我已經看到使用案例,商店在早上和晚上都開放,但在下午的時間沒有。

無論商店是否有多次輪班,我都會有一個30分鐘的時間表(您也可以做1小時的間隔或15分鐘的間隔)存儲並使用它來標記商店的任何時間打開或關閉。