我正在做一个出租车服务的项目。在这个速度是白天和晚上不同。 在窗体中只有旅程开始日期和结束日期被选中。基于此,我必须计算日夜的时间。如何使用C在两个日期之间得到日夜之间没有#
在这里我很困惑如何计算日夜之分。
在此先感谢。
我正在做一个出租车服务的项目。在这个速度是白天和晚上不同。 在窗体中只有旅程开始日期和结束日期被选中。基于此,我必须计算日夜的时间。如何使用C在两个日期之间得到日夜之间没有#
在这里我很困惑如何计算日夜之分。
在此先感谢。
使用Subtract
方法获得差异,这是一个TimeSpan
值。例如:
TimeSpan diff = SecondDate.Subtract(FirstDate);
你可以得到例如时间跨度长的时间如下:
double hours = diff.TotalHours;
我不知道哪个时间单位“日日夜夜”可以被解释为,虽然。也许几天?
double days = diff.TotalDays;
DateTime dt1,dt2;
//...
TimeSpan period = dt1 - dt2;
int days = period.Days;
private List<DateTime> GetDateRange(DateTime StartingDate, DateTime EndingDate)
{
if (StartingDate > EndingDate)
{
return null;
}
List<DateTime> rv = new List<DateTime>();
DateTime tmpDate = StartingDate;
do
{
rv.Add(tmpDate);
tmpDate = tmpDate.AddDays(1);
} while (tmpDate <= EndingDate);
return rv;
}
要查看此代码的运行,复制并粘贴下面的代码到SnippetCompiler:
DateTime StartingDate = DateTime.Parse("02/25/2007");
DateTime EndingDate = DateTime.Parse("03/06/2007");
foreach (DateTime date in GetDateRange(StartingDate,EndingDate))
{
WL(date.ToShortDateString());
}
输出示例:
2/25/2007
2/26/2007
2/27/2007
2/28/2007
3/1/2007
3/2/2007
3/3/2007
3/4/2007
3/5/2007
3/6/2007
这听起来像一个非常长的出租车旅程,需要几天和夜晚!
我认为你需要定义什么是白天和黑夜,以便获得完美的答案。您还需要考虑夏令时对您的计算有什么影响。
如果说:
在这种情况下,然后计算将要求您:
需要注意的是:
一些伪代码:
var numDayHours = 0.0;
var numNightHours = 0.0;
var current = startDateTime;
while (current < endDateTime)
{
next_hop = calculate_next_hop (current, endDateTime);
// select next date time
switch (next_hop.hop_type)
{
case HopType.night_time_hop:
numNightHours += next_hop.num_hours;
break;
case HopType.day_time_hop:
numDayHours += next_hop.num_hours;
break;
}
current = next_hop.EndDateTime;
}
// and here is the result
double numDays = numDayHours/12.0;
double numHours = numNightHours/12.0;
怎么来的WL以红色突出显示在这里? – 2011-10-30 04:43:36