我使用Python編程並使用SQLAlchemy存儲工作時間。
營業時間是由三個部分組成:Python,SQLAlchemy:將工作時間存儲爲二進制位掩碼
- 以二進制存儲爲一個位掩碼
- 業務打開時間一週的日子,
- 業務關閉的時間。
位掩碼的工作原理是這樣的。有7位數字,它們是0或1,它們代表不同的工作日順序。每個位置代表一週中的某一天。第一個位置代表星期一,最後一個代表星期日。例如,星期一至星期五爲1111100,星期五至星期六爲0000111。另外,我在軍事時間儲存小時,0600表示6AM,1800表示6PM。
hours = Table('hours', Base.metadata,
Column("id", Integer, primary_key=True),
Column("businessid", Integer, ForeignKey('businesses.id')),
Column("days", Integer),
Column("open", Integer),
Column("close", Integer),
)
class Hours(object):
def __init__(self, days=None, open=None, close=None):
self.days = days
self.open = open
self.close = close
mapper(Hours, hours)
mapper(Business, businesses, properties={
'hours': relationship(Hours, backref='business'),
})
什麼是Pythonic的方式來計算何時兩個位掩碼代表一週的日子重疊?另外,當給定兩對小時對象時,最好的方法是找出一個企業目前是否開放?
那麼,這是否假設在設定的日子裏,那些日子的時間是一樣的? – Santa
另外,你是什麼意思重疊? – Santa
重疊我的意思是,衝突。假設我有特定業務的營業時間,M-F 8AM到5PM。然後我有人試圖爲F-Su 9AM添加另一個Hours對象到4PM。這些時候有衝突,因此必須調和。 – john