我一直在尋找適當的舍入機制,但沒有發現我似乎正是我所需要的。DateTime向上和向下舍入
我需要四捨五入和圓整下來,我也需要考慮到它已經四捨五入的情況。
我需要以下四捨五入發生
5:00 -> RoundDown() -> 5:00
5:04 -> RoundDown() -> 5:00
5:09 -> RoundDown() -> 5:00
5:10 -> RoundDown() -> 5:10
4:00 -> RoundUp() -> 4:00
4:50 -> RoundUp() -> 4:50
4:51 -> RoundUp() -> 5:00
4:56 -> RoundUp() -> 5:00
基本上我需要它綜合報告()或ROUNDDOWN()到最近的10分鐘明確,但它也應該留出時間不變,如果它已經在一個多10分鐘。此外,我想任何秒截斷到它們對圓程序
4時五十零分45秒沒有效果 - >四點五十分00秒 - >綜合報告() - > 4:50
不任何人都有任何方便的代碼來實現這一點。
我發現這個代碼在某處,但它輪到5:00 - > RoundUp() - > 5:10,而不是保持原樣,因爲它已經是10的倍數,不需要舍入。也我不知道如何秒會影響它
public static DateTime RoundDateTime(this DateTime dt, int minutes, RoundingDirection direction)
{
TimeSpan t;
switch (direction)
{
case RoundingDirection.Up:
t = (dt.Subtract(DateTime.MinValue)).Add(new TimeSpan(0, minutes, 0)); break;
case RoundingDirection.Down:
t = (dt.Subtract(DateTime.MinValue)); break;
default:
t = (dt.Subtract(DateTime.MinValue)).Add(new TimeSpan(0, minutes/2, 0)); break;
}
return DateTime.MinValue.Add(new TimeSpan(0,
(((int)t.TotalMinutes)/minutes) * minutes, 0));
}
希望有人可以編輯該方法,使它爲我工作。由於
好的。所以你有四捨五入的代碼。你爲什麼不修改它來做它你需要做的事情? – 2012-07-06 14:49:01
這項工作? http://stackoverflow.com/questions/7029353/c-sharp-round-up-time-to-nearest-x-minutes – comecme 2012-07-06 14:53:40
你的舍入規則不清楚。你週五5:09到5:00但是4點56分到5點。 – Rawling 2012-07-06 14:58:32