是否有一个简单的方法将DateTime四舍五入到最接近的分钟?即. .2011-08-11 16:58:20变成2011-08-11 16:59:00
我已经尝试了几种解决方案
dt.AddMinutes((60 - dt.Minute) % 10);
但这似乎增加了整整一分钟。
正如@ChristofWollenhaupt在评论部分提到的
舍入应该基于Ticks属性而不是Second。否则四舍五入的DateTime仍然有不同的毫秒值
如果是这种情况,则创建新的DateTime
并根据刻度对分钟进行校正。
TimeSpan timeSpan = new TimeSpan(0, 0, 0, dt.Second, dt.Millisecond);
DateTime roundedDateTime = new DateTime(
dt.Year,
dt.Month,
dt.Day,
dt.Hour,
dt.Minute,
0, //Second
0, //Millisecond
dt.Kind
);
roundedDateTime.AddMinutes(timeSpan.Ticks > 0 ? 1 : 0);