又碰到个算法的问题,想请教各位大大

2020-01-25 15:19发布

本帖最后由 lswhome 于 2014-1-9 02:35 编辑

就是计算某一时刻是否在某一时间段内:比如从23:25开始到第二天的8:30结束,某一时刻(几点几分)是否在这个时间段内
算法必须包含在同一天之内(比如00:00~23:00)和跨天(比如22:00~第二天的21:00)想来想去想不到好的算法,用C51。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
aheadlead
1楼-- · 2020-01-27 11:12
我没有仔细看各位高手的回复,说说我的想法。

你的问题是给定
起始日期第d1天,起始时间h1:m1,和
结束日期第d2天,结束时间h2:m2。
求第d天h时m分是否在上述时间段内。

以0天0时0分为基准,
计算起始日期距离基准的分钟数t1=d1*1440+h1*60+m1*1
计算结束日期距离基准的分钟数t2=d2*1440+h2*60+m2*1
计算给定时间距离基准的分钟数t =d*1440+h*60+m*1

接下来你只要判断条件((t1 <= t) && (t <= t2))就能知道是否在这个时间段内

很简单的,也不需要32位变量。
希望能帮到你。
woaidamimi
2楼-- · 2020-01-27 14:03
 精彩回答 2  元偷偷看……
canspider
3楼-- · 2020-01-27 17:45
14楼的算法用三个字概括,就是 时间戳
看过无数的算闰年,算星期,算时间的代码
基本上没有超越mktime的

一周热门 更多>