如何将两个DateTimes之间的天数划分为几个一天的时间段

本文关键字:划分 时间段 一天 几个 之间 两个 DateTimes | 更新日期: 2023-09-27 18:10:38

我有一个CSV文件,我将其导入VehicleMovement表。每个记录要么是车辆出口,要么是停车场的入口,在着火时跳圈后,我将这些合并到VehiclePresence表中,其中几乎每个记录都有StartDateTimeEndDateTime。现在我必须计算停车时间长短的停车费。这是一个问题,当存在超过一天。停车价格是基于一天中的时间,一周中的哪一天等,所以我需要将这些存在分成单个的存在,并计算它们的每日费用。

。我有一个06h00的切换时间,和VehiclePresence记录,其中StartDateTime == 2013-04-22 20:37:28EndDateTime == 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小时内收取一大笔费用,但我被告知要考虑各种定价规则。

如何将两个DateTimes之间的天数划分为几个一天的时间段

计算开始时间后的第一个中断时间,然后逐日循环,直到结束时间

的例子:

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