Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memotong Millisaat dengan Cekap daripada Objek DateTime .NET?

Bagaimana untuk Memotong Millisaat dengan Cekap daripada Objek DateTime .NET?

Patricia Arquette
Patricia Arquetteasal
2025-01-18 22:19:08386semak imbas

How to Efficiently Truncate Milliseconds from a .NET DateTime Object?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn