我有两次Ticks
这样:
//2016-01-22?T17:34:52.648Z
var tick1 = 635890808926480754;
//2016-01-22?T17:34:52.000Z
var tick2 = 635890808920000000;
Run Code Online (Sandbox Code Playgroud)
现在你可以看到比较这两个数字 tick1 == tick2 returns false
虽然日期是相同的(除了毫秒).
我想截断这些数字的毫秒数而不将其转换为日期时间(因为这会降低效率)
我看过Math.Round,它说:
将值舍入为最接近的整数或指定的小数位数.
还有Math.Truncate我认为我不需要做什么.
看着Datetime.Ticks它说:
单个刻度表示一百纳秒或一千万分之一秒.一毫秒内有10,000个刻度,或者一秒钟内有1000万个刻度.
因此,我需要将数字减少到最接近的一千万.
这可能吗?
Dmi*_*try 11
你可以使用整数除法:
if (tick1 / TimeSpan.TicksPerSecond == tick2 / TimeSpan.TicksPerSecond)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为如果你除long
/ int
a long
/ int
结果也是long
/ int
因此截断小数部分.
你可以用这个:
if(Math.Abs(tick1 - tick2) < TimeSpan.TicksPerSecond)
Run Code Online (Sandbox Code Playgroud)
这避免了分裂.
您可以使用以下任何一项调整所需的精度:
TimeSpan.TicksPerDay
TimeSpan.TicksPerHour
TimeSpan.TicksPerMinute
TimeSpan.TicksPerSecond
TimeSpan.TicksPerMillisecond
归档时间: |
|
查看次数: |
715 次 |
最近记录: |