日期:2014-05-17  浏览次数:20596 次

问个简单的算法?????????
已经当前时间,我要得到时时彩当前是第几期,且离开奖时间还剩几秒

时时彩开奖说明:
夜间0点至2点,5分钟一期
10:00-21:50,10分钟一期
22点至24点,5分钟一期

全天共120期。
---------------------------------------------

我要得到以下结果:

比如:
0点03分----->第1期,离开奖时间还剩余120秒
0点11分----->第3期,离开奖时间还剩余240秒

------解决方案--------------------

------解决方案--------------------
写个sql的

DECLARE @dt DATETIME
SET @dt=CONVERT(VARCHAR(10),GETDATE(),120)
;WITH temp AS (
SELECT
    [Datatime]=DATEADD(mi,number,@dt),
    [openDatatime]=CASE
        WHEN CONVERT(VARCHAR(5),DATEADD(mi,number,@dt),114) BETWEEN '00:00' AND '01:55' THEN DATEADD(mi,(number/5+1)*5,@dt)
        WHEN CONVERT(VARCHAR(5),DATEADD(mi,number,@dt),114) BETWEEN '10:00' AND '21:50' THEN DATEADD(mi,(number/10+1)*10,@dt)
        WHEN CONVERT(VARCHAR(5),DATEADD(mi,number,@dt),114) BETWEEN '22:00' AND '23:55' THEN DATEADD(mi,(number/5+1)*5,@dt)
        ELSE null    
    END
FROM [master].dbo.spt_values sv WHERE sv.[type]='p' AND DATEADD(mi,number,@dt)<DATEADD(dd,1,@dt) 
)
SELECT 
    时间=CONVERT(VARCHAR(5),[Datatime],114),
    相差秒=DATEDIFF(ss,[Datatime],[openDatatime])
FROM temp

------解决方案--------------------
把开奖对应的秒数存到一个数组a里,取当前时间,算出对应的秒数t

遍历数组,当 a[i+1]-t>a[i+1]-a[i]的时候,a[i+1]-t就是下次开奖的秒数
------解决方案--------------------
    说一个我的思路,用UNIX时间戳,时间戳是从1970年1月1日开始所经过的秒数。
    用今天夜间0点至2点这个阶段来举例。
    假设今天0点整的时间戳的值是X,0点11分的时间戳的值是Y,计算第几期的方法就是:(Y-X)/300。计算剩余时间就是:(Y-X)%300。为什么是300呢,因为5分钟是300秒....
    以此类推.....
------解决方案--------------------
写个倒计时不就可以了,什么都不要看,从零点开始,每隔一期开始倒计时,开奖后重新倒计时
------解决方案--------------------

------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = Enumerable.Range(0, 24 * 60)
                .Select(x => new { H = x / 60, M = x % 60, X = x })
                .Where(x => x.M % 5 == 0)
                .Where(x => x.H < 2