猿问

python/sql 使用 48 位二进制字符串表示一天中的半小时间隔

所以,我正在做一个小项目,但我被难住了。我正在使用现有的 sql 数据库来查找值。把我难住的表格是用来设置每天不同时间段的表格,它使用二进制作为逻辑,48位数字代表半小时。

SQL 表有列 Day1(Sun) - Day7(Sat),每个列有 48 位“二进制”字符串

例如,第 1 天 = 星期日,它有一个 48 位的字符串“111111111111111111111111000000000000000000000000”,它表示这个特定的一天从 00:00 到 11:59(1) 将是无效的:12305 到 9 (0).

我想做的是根据与此表相比的事件时间检查事件是否有效。因此,如果某个事件发生在周日 11:00,它会在第 1 天(周日)检查表并发现表示该时间的数字是 1,那么我们是有效的。或者,如果另一个事件发生在 1:15,它将是无效的,因为那将是零。我无法将我的大脑围绕如何将这个二进制逻辑转换为在 python 中可用的东西,我正在考虑某种类型的转换表,但仍然是 python 的新手,所以不确定是否有我可以使用的现有库或一些简单的方法这样做我看不到。希望能指出正确的方向。基本上如何解释最左边的数字代表00:00到00:29等的python。


人到中年有点甜
浏览 255回答 1
1回答

HUX布斯

这是指示如何计算映射的代码。将 12 小时制转换为 24 小时制。计算给定时间在哪个 30 分钟的时间段内。使用该数字从字符串中选择适当的字符。——from math import floorvalidity = "111111111111111111111111000000000000000000000000"hours = 1minutes = 15am_or_pm = 'PM'if am_or_pm == 'PM':    hours += 12total_minutes = 60*hours+minutesprint ('total_minutes', total_minutes)period = total_minutes // 30print ('period', period)print ('validity', validity[period])
随时随地看视频慕课网APP

相关分类

Python
我要回答