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

2024-09-22 16:32:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

例如,Day 1=Sunday,它有一个48位的字符串“111111111111111000000000000000000000000000000”,表示这个特定的日期从00:00到11:59(1)是有效的,从12:00到23:59是无效的(0)

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


Tags: 项目字符串数据库sql时间二进制事件数字
1条回答
网友
1楼 · 发布于 2024-09-22 16:32:37

下面是指示如何计算映射的代码

  • 将12小时转换为24小时
  • 计算给定时间“in”的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])

相关问题 更多 >