如何将两个DateTimes之间的天数划分为几个一天的时间段
本文关键字:划分 时间段 一天 几个 之间 两个 DateTimes | 更新日期: 2023-09-27 18:10:38
我有一个CSV文件,我将其导入VehicleMovement
表。每个记录要么是车辆出口,要么是停车场的入口,在着火时跳圈后,我将这些合并到VehiclePresence
表中,其中几乎每个记录都有StartDateTime
和EndDateTime
。现在我必须计算停车时间长短的停车费。这是一个问题,当存在超过一天。停车价格是基于一天中的时间,一周中的哪一天等,所以我需要将这些存在分成单个的存在,并计算它们的每日费用。
。我有一个06h00的切换时间,和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小时内收取一大笔费用,但我被告知要考虑各种定价规则。
计算开始时间后的第一个中断时间,然后逐日循环,直到结束时间
的例子:
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