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
Libérer: 2025-01-18 22:19:08
original
322 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal