我有一个CSV文件,导入到VehicleMovement表中。每一张唱片要么是车辆的出入口,要么是公园的入口,在火中跳过铁环之后,我将它们合并成一个VehiclePresence表,其中几乎每一张唱片都有一个StartDateTime和EndDateTime。现在我必须计算车辆出现的长度的停车费。这是一个问题,当存在超过一天。停车价格是基于一天的时间,一周的时间等,所以我需要把这种存在分成一天的存在,并计算他们的每日费用。
例如,我的切入时间为06小时,还有VehiclePresence记录,其中StartDateTime == 2013-04-22 20:37:28和EndDateTime == 2013-04-25 22:55:20。我想提出下面的VehiclePresenses
1. 04/22 20h37 to 04/23 06h00.
2. 04/23 06h00 to 04/24 06h00.
3. 04/24 06h00 to 04/25 22h55.这将给我留下一个原始的VehiclePresence记录,修改后的开始和结束时间,和两个新的记录,我将插入。这没什么问题。
我该怎么做?我个人只会有一个巨大的收费超过24小时,但我被简要地考虑到各种定价规则。
发布于 2013-04-23 17:21:02
计算开始时间后的第一次休息时间,然后逐日循环,直到到达结束时间为止。
示例:
DateTime StartDateTime = new DateTime(2013, 04, 22, 20, 37, 28);
DateTime EndDateTime = new DateTime(2013, 04, 25, 22, 55, 20);
DateTime startTime = StartDateTime;
// calculate first break time
DateTime breakTime = StartDateTime.Date.AddHours(6);
if (breakTime < StartDateTime) {
breakTime = breakTime.AddDays(1);
}
while (breakTime < EndDateTime) {
Console.WriteLine("{0} - {1}", startTime, breakTime);
// move to next day
startTime = breakTime;
breakTime = breakTime.AddDays(1);
}
Console.WriteLine("{0} - {1}", startTime, EndDateTime);输出:
2013-04-22 20:37:28 - 2013-04-23 06:00:00
2013-04-23 06:00:00 - 2013-04-24 06:00:00
2013-04-24 06:00:00 - 2013-04-25 06:00:00
2013-04-25 06:00:00 - 2013-04-25 22:55:20https://stackoverflow.com/questions/16175271
复制相似问题