Maison >développement back-end >C++ >Comment tronquer efficacement les millisecondes d'un objet DateTime .NET ?

Comment tronquer efficacement les millisecondes d'un objet DateTime .NET ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-18 22:19:08324parcourir

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

Gestion des écarts en millisecondes dans les objets DateTime .NET

Lors de la comparaison des horodatages reçus de requêtes externes avec des valeurs de base de données (par exemple, SQL Server), les différences de précision peuvent entraîner des problèmes de comparaison. Cela vient souvent de la précision à la milliseconde de la base de données, qui peut ne pas être présente dans les données entrantes. Pour remédier à cela, il est nécessaire de supprimer les millisecondes de l'objet .NET DateTime.

Une solution concise consiste à manipuler directement la propriété Ticks :

<code class="language-csharp">DateTime dateTime = ...; // Your DateTime object
dateTime = new DateTime(dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond), dateTime.Kind);</code>

Alternativement, une version légèrement plus lisible obtient le même résultat :

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

Les deux méthodes tronquent efficacement les millisecondes tout en préservant la propriété Kind (Local, Utc ou Unspecified).

Pour une réutilisabilité améliorée, pensez à créer une méthode d'extension :

<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>

Cette méthode d'extension permet une troncature flexible :

<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>

Ces méthodes fournissent des moyens simples d'éliminer les écarts en millisecondes lors de la comparaison de DateTime objets, garantissant ainsi des comparaisons d'horodatage précises.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn