我正在做一個出租車服務的項目。在這個速度是白天和晚上不同。 在窗體中只有旅程開始日期和結束日期被選中。基於此,我必須計算日夜的時間。如何使用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