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

分不多了,求一个时间段算法
是一个停车场的算法,有一种停车卡:早7:00~23:00免费,其他时间2元一小时,每超过15分钟算一小时整。总停车费为all_fee,开始时间为start_time,离开时间为end_time。求这个算法。。。

------解决方案--------------------
你是不是说反了。哪有高峰时段免费,夜间收费的。
------解决方案--------------------
引用:
你是不是说反了。哪有高峰时段免费,夜间收费的。

晚上有人通宵值班是要前的···白天没人值班····
------解决方案--------------------
引用:
Quote: 引用:

你是不是说反了。哪有高峰时段免费,夜间收费的。

晚上有人通宵值班是要前的···白天没人值班····

没听说。我们这里白天4元/小时。夜间0.5元/小时。
一个停车场可以停几百辆车,每个车每小时即便只收0.5元,如果一直处在满载状态,一天也有几千收入,养活几个看护者绰绰有余。费用的大头还是场地本身。
------解决方案--------------------
//时间平移7个小时,将免费时段变成是0到16时,计费时段则为16到24时
startTime = startTime-7;
endTime = endTime-7;
//停车时间超过24小时
int parkDay = (int)((endTime - startTime) / 24);//每超过24小时意味着要收费8小时
startTime = startTime > 0 && startTime < 16 ? 16 : startTime;
endTime = endTime > 0 && endTime < 16 ? 0 : endTime;
//算总价
all_fee = 2 * ((int)(endTime - startTime) + parkDay * 8) + ((endTime - startTime) % 1 > 0.25 ? 2 : 0);
------解决方案--------------------
修改一下:
endTime = endTime > 0 && endTime < 16 ? 24 : endTime;

------解决方案--------------------
        System.Timers.Timer Timer = new System.Timers.Timer(1000);
        List<StopCarInfo> CarList = new List<StopCarInfo>();

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
            this.Timer.Start();
        }

        private void Timer_Elapsed(object sender, EventArgs e)
        {
            foreach (var car in CarList)
            {

                if (car.CarState == StopCarInfo.State.Out)
                {
        &nbs