Mengendalikan Percanggahan Milisaat dalam Objek DateTime .NET
Apabila membandingkan cap masa yang diterima daripada permintaan luaran dengan nilai pangkalan data (cth., SQL Server), perbezaan ketepatan boleh membawa kepada isu perbandingan. Ini selalunya berpunca daripada ketepatan milisaat pangkalan data, yang mungkin tidak terdapat dalam data masuk. Untuk membetulkan ini, mengalih keluar milisaat daripada objek .NET DateTime
adalah perlu.
Penyelesaian ringkas melibatkan memanipulasi secara langsung harta Ticks
:
<code class="language-csharp">DateTime dateTime = ...; // Your DateTime object dateTime = new DateTime(dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond), dateTime.Kind);</code>
Sebagai alternatif, versi yang lebih mudah dibaca mendapat hasil yang sama:
<code class="language-csharp">dateTime = dateTime.AddTicks(-(dateTime.Ticks % TimeSpan.TicksPerSecond));</code>
Kedua-dua kaedah secara berkesan memotong milisaat sambil mengekalkan sifat Kind
(Tempatan, Utc atau Tidak Ditentukan).
Untuk kebolehgunaan semula yang dipertingkatkan, pertimbangkan untuk membuat kaedah sambungan:
<code class="language-csharp">public static DateTime TruncateMilliseconds(this DateTime dateTime, TimeSpan timeSpan) { if (timeSpan == TimeSpan.Zero) return dateTime; // Handle zero TimeSpan if (dateTime == DateTime.MinValue || dateTime == DateTime.MaxValue) return dateTime; // Preserve special values return dateTime.AddTicks(-(dateTime.Ticks % timeSpan.Ticks)); }</code>
Kaedah sambungan ini membolehkan pemangkasan fleksibel:
<code class="language-csharp">dateTime = dateTime.TruncateMilliseconds(TimeSpan.FromMilliseconds(1)); // Truncate to whole milliseconds dateTime = dateTime.TruncateMilliseconds(TimeSpan.FromSeconds(1)); // Truncate to whole seconds dateTime = dateTime.TruncateMilliseconds(TimeSpan.FromMinutes(1)); // Truncate to whole minutes // ... and so on</code>
Kaedah ini menyediakan cara mudah untuk menghapuskan percanggahan milisaat apabila membandingkan DateTime
objek, memastikan perbandingan cap masa yang tepat.
Atas ialah kandungan terperinci Bagaimana untuk Memotong Millisaat dengan Cekap daripada Objek DateTime .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!