C#のdatetimeオブジェクトを最も近い分に丸めたい。したがって、datetimeオブジェクトに1分、29秒、999ミリ秒がある場合は、1分に丸めます。 1分30秒0ミリ秒の場合は、2分に丸めます。C#での日時の丸め - なぜこのソリューションは機能しますか?
var timespan = new TimeSpan(0, 0, 1, 0);
//timespan has a value of 1 minute because I want to round to the nearest minute
return new DateTime(((dateTime.Ticks + timespan.Ticks/2)/ timespan.Ticks)* timespan.Ticks);
私は最後の行についてはよく分からない:
は、私は、インターネットから見つかったこのソリューションを実装しました。なぜ2で割りますか?なぜ私たちはタイムスパンで分裂するのですか?
整数部は小数部分を切り捨てます。 –
@TimSchmelter私はそう思っていましたが、この場合、1ダニは100ナノ秒であるため、その必要がありますか? –
(+ d.Ticks - 1)は、必要に応じて丸めます。 /と*は丸められています。例12の次の5へ:(12 + 5 - 1)= 16,16/5 = 3(これは整数データ型なので)、3 * 5 = 15. tada :) - Diego Frehner Aug 9 '14 at 10 :13 ------コメントはhttp://stackoverflow.com/questions/7029353/how-can-i-round-up-the-time-to-the-nearest-x-minutes –