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