为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2021-07-22 18:15:57
所以,我正在做一个小项目,但我被难住了。我正在使用现有的 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。
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

这是指示如何计算映射的代码。

  • 将 12 小时制转换为 24 小时制。

  • 计算给定时间在哪个 30 分钟的时间段内。

  • 使用该数字从字符串中选择适当的字符。

——

from math import floor


validity = "111111111111111111111111000000000000000000000000"


hours = 1

minutes = 15

am_or_pm = 'PM'


if am_or_pm == 'PM':

    hours += 12

total_minutes = 60*hours+minutes

print ('total_minutes', total_minutes)

period = total_minutes // 30

print ('period', period)

print ('validity', validity[period])


查看完整回答
反对 回复 2021-07-27
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号