首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个DateTimes之间的一段时间分成几天?

如何将两个DateTimes之间的一段时间分成几天?
EN

Stack Overflow用户
提问于 2013-04-23 17:11:55
回答 1查看 834关注 0票数 1

我有一个CSV文件,导入到VehicleMovement表中。每一张唱片要么是车辆的出入口,要么是公园的入口,在火中跳过铁环之后,我将它们合并成一个VehiclePresence表,其中几乎每一张唱片都有一个StartDateTimeEndDateTime。现在我必须计算车辆出现的长度的停车费。这是一个问题,当存在超过一天。停车价格是基于一天的时间,一周的时间等,所以我需要把这种存在分成一天的存在,并计算他们的每日费用。

例如,我的切入时间为06小时,还有VehiclePresence记录,其中StartDateTime == 2013-04-22 20:37:28EndDateTime == 2013-04-25 22:55:20。我想提出下面的VehiclePresenses

代码语言:javascript
复制
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小时,但我被简要地考虑到各种定价规则。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 17:21:02

计算开始时间后的第一次休息时间,然后逐日循环,直到到达结束时间为止。

示例:

代码语言:javascript
复制
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);

输出:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16175271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档