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
Lepaskan: 2025-01-18 22:19:08
asal
322 orang telah melayarinya

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>
Salin selepas log masuk

Sebagai alternatif, versi yang lebih mudah dibaca mendapat hasil yang sama:

<code class="language-csharp">dateTime = dateTime.AddTicks(-(dateTime.Ticks % TimeSpan.TicksPerSecond));</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan