有没有任何一种数学方法可以将DateTime减少到精确的小时,一天左右?类似于小数点的圆形到int.
Period.Day
如果原始值是2011-01-01 13:00:00,它最终会进入2011-01-01 00:00:00
如果是Period.Hour
如果原始值是2011-03-11 13:32:00,它最终会进入2011-03-11 13:00:00
我想下面的事情.这当然可以正常工作,但是range后来无论如何都会重复使用-array.如果我可以直接在该迭代上计算,而不是自己的迭代,那就更好了.但someType不能放入该迭代(它取决于someType).
if (someType == Period.Day)
range.ForEach(d => d.time = new DateTime(d.time.Year, d.time.Month, d.time.Day,0,0,0));
if (someType == Period.Hour)
range.ForEach(d => d.time = new DateTime(d.time.Year, d.time.Month, d.time.Day, d.time.Hour, 0, 0));
Run Code Online (Sandbox Code Playgroud)
Cod*_*aos 16
舍入到一天相当于time.Date,四舍五入到最近(在中点上)是简单的( time + 12hours ).Date.
为了缩小到整整一个小时,我想不出比你更好的代码.对于四舍五入到最近的小时,您可以将代码应用于time + 30mins.
可能有一种更快的方法可以舍入到最近的小时:
const Int64 HourInTicks=...;
Int64 timeInTicks=time.Ticks;
Int64 trucatedToHour=timeInTicks-timeInTicks%HourInTicks;
Run Code Online (Sandbox Code Playgroud)
但我会避免这种情况,除非你真的需要表演,这是不太可能的.
(如果您使用当地时间,我到最近的一轮可能会在本地时间偏移发生变化的日子出现问题)
Sva*_*rog 14
要向下舍入到日,您可以使用DateTime.Date属性.
要把它缩小到一小时,我担心你不得不使用你在你的例子中所做的事情或类似的事情:
d.Date.AddHours(d.Hour)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21904 次 |
| 最近记录: |