Truncate milliseconds from .NET DateTime
The inherent precision of milliseconds stored in SQL Server timestamps can cause challenges when comparing them to incoming request timestamps that lack this precision. To account for this discrepancy, truncating milliseconds is a common solution.
This can be achieved using the following methods:
<code class="language-csharp">DateTime dateTime = ... 任何值 ...; dateTime = new DateTime( dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond), dateTime.Kind );</code>
Alternatively, you can use a more concise syntax:
<code class="language-csharp">dateTime = dateTime.AddTicks(-(dateTime.Ticks % TimeSpan.TicksPerSecond));</code>
Also, extension methods can generalize this concept:
<code class="language-csharp">public static DateTime Truncate(this DateTime dateTime, TimeSpan timeSpan) { // 处理无效输入 if (timeSpan == TimeSpan.Zero) return dateTime; if (dateTime == DateTime.MinValue || dateTime == DateTime.MaxValue) return dateTime; return dateTime.AddTicks(-(dateTime.Ticks % timeSpan.Ticks)); }</code>
To use this extension method, simply specify the desired truncation interval:
<code class="language-csharp">dateTime = dateTime.Truncate(TimeSpan.FromMilliseconds(1)); // 截断到整毫秒 dateTime = dateTime.Truncate(TimeSpan.FromSeconds(1)); // 截断到整秒</code>
The above is the detailed content of How to Truncate Milliseconds from a .NET DateTime?. For more information, please follow other related articles on the PHP Chinese website!