1

我有一个导入到VehicleMovement表中的 CSV 文件。每条记录要么是车辆出口,要么是停车场的入口,在着火时跳过铁环后,我将它们合并到一个VehiclePresence表格中,其中几乎每条记录都有 aStartDateTimeEndDateTime. 现在我必须计算车辆存在时间的停车费。当存在超过一天时,这是一个问题。停车价格基于一天中的时间、一周中的一天等,因此我需要将该存在拆分为单天存在并计算它们的每日费用。

例如,我有一个 06h00 的切换时间,以及== 2013-04-22 20:37:28和== 2013-04-25 22:55:20VehiclePresence的记录。我想变出以下内容:StartDateTimeEndDateTimeVehiclePresenses

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 小时内收取一笔巨额费用,但我被告知允许各种定价规则。

4

1 回答 1

1

计算开始时间后的第一个休息时间,并日复一日地循环直到到达结束时间。

例子:

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:20
于 2013-04-23T17:21:02.130 回答