Partage via


Dates, heures et fuseaux horaires

.NET fournit des types qui représentent des dates, des heures et des fuseaux horaires. Cet article décrit ces types.

Outre la structure de base DateTime, .NET fournit les classes suivantes qui prennent en charge l’utilisation des fuseaux horaires :

  • TimeZoneInfo

    Utilisez cette classe pour utiliser n’importe quel fuseau horaire prédéfini sur un système, pour créer de nouveaux fuseaux horaires et pour convertir facilement des dates et des heures d’un fuseau horaire à un autre. Pour le nouveau développement, utilisez la classe TimeZoneInfo au lieu de la classe TimeZone.

  • DateTimeOffset

    Utilisez cette structure pour travailler avec des dates et des heures dont le décalage (ou différence) de l’heure UTC est connu. La structure DateTimeOffset combine une valeur de date et d’heure avec le décalage de cette heure par rapport à l’heure UTC. En raison de sa relation avec UTC, une valeur de date et d’heure individuelle identifie sans ambiguïté un point unique dans le temps. Cela rend une valeur DateTimeOffset plus portable d’un ordinateur à une autre qu’une valeur DateTime.

Les classes suivantes pour prendre en charge l’utilisation du temps :

  • TimeSpan

    Utilisez cette structure pour représenter un intervalle de temps, tel qu’une durée écoulée ou la différence entre deux dates.

  • TimeOnly

    Utilisez cette structure pour représenter une heure sans date. L’heure représente les heures, les minutes et les secondes d’un jour non spécifique. TimeOnly a une plage de 00:00:00.0000000 à 23:59:59.9999999. Ce type peut être utilisé pour remplacer DateTime et TimeSpan types dans votre code lorsque vous avez utilisé ces types pour représenter une heure. Pour plus d’informations, consultez Comment utiliser les structures DateOnly et TimeOnly.

    Important

    TimeOnly n’est pas disponible pour .NET Framework.

  • TimeProvider

    Il s’agit d’une classe de base qui fournit une abstraction du temps. Un moyen courant de vérifier l’heure actuelle consiste à utiliser DateTime.UtcNow ou DateTimeOffset.UtcNow. Toutefois, ces types ne fournissent aucun contrôle sur ce qui est considéré comme « maintenant ». Pourquoi voulez-vous contrôler cela ? Testabilité. Par exemple, envisagez d’écrire une application de suivi des événements qui fournit des rappels 1 jour avant l’événement. La logique de l'application consiste à vérifier l'heure de l'événement chaque heure et à alerter l'utilisateur 24 heures avant l'événement. Lorsque vous écrivez vos tests pour l’application, vous devez fournir votre propre type qui encapsule DateTimeOffset.UtcNow pour tester cette logique, mais maintenant .NET fournit cette classe d’abstraction pour vous.

    Pour plus d’informations, consultez Qu’est-ce que TimeProvider.

    Le type TimeProvider est inclus dans .NET.

    Pour .NET Framework et .NET Standard, TimeProvider est fourni par le package NuGet Microsoft.Bcl.TimeProvider.

Les classes suivantes pour prendre en charge l’utilisation des dates :

  • DateOnly

    Utilisez cette structure lors de l’utilisation d’une valeur qui représente uniquement une date. La date représente l’ensemble du jour, du début du jour à la fin. DateOnly a une plage de 0001-01-01 à 9999-12-31. Et ce type représente la combinaison mois, jour et année sans heure spécifique. Si vous avez précédemment utilisé un type DateTime dans votre code pour représenter une date qui n’a pas tenu compte de l’heure, utilisez ce type à sa place. Pour plus d’informations, consultez Comment utiliser les structures DateOnly et TimeOnly.

    Important

    DateOnly n’est pas disponible pour .NET Framework.

La section suivante fournit les informations dont vous avez besoin pour travailler avec des fuseaux horaires et créer des applications prenant en charge les fuseaux horaires qui peuvent convertir des dates et des heures d’un fuseau horaire à un autre.

Contenu de cette section

Vue d’ensemble du fuseau horaire
Décrit la terminologie, les concepts et les problèmes liés à la création d’applications prenant en charge les fuseaux horaires.

choisir entre DateTime, DateTimeOffset, TimeSpan et TimeZoneInfo
Décrit quand utiliser les types DateTime, DateTimeOffsetet TimeZoneInfo lors de l’utilisation des données de date et d’heure.

Recherche des fuseaux horaires définis sur un système local
Décrit comment énumérer les fuseaux horaires trouvés sur un système local.

Procédure : énumérer les fuseaux horaires présents sur un ordinateur
Fournit des exemples qui énumèrent les fuseaux horaires définis dans le Registre d’un ordinateur et qui permettent aux utilisateurs de sélectionner un fuseau horaire prédéfini dans une liste.

Comment accéder aux objets prédéfinis pour les fuseaux horaires UTC et local
Décrit comment accéder au temps universel coordonné et au fuseau horaire local.

Procédure : instancier un objet TimeZoneInfo
Décrit comment instancier un objet TimeZoneInfo à partir du registre système local.

Instanciation d’un objet DateTimeOffset
Décrit les façons dont un objet DateTimeOffset peut être instancié et les façons dont une valeur de DateTime peut être convertie en valeur DateTimeOffset.

Comment : créer des fuseaux horaires sans règles d’ajustement
Décrit comment créer un fuseau horaire personnalisé qui ne prend pas en charge la transition vers et depuis l’heure d’été.

Comment : créer des fuseaux horaires avec des règles d’ajustement
Décrit comment créer un fuseau horaire personnalisé qui prend en charge une ou plusieurs transitions vers et depuis l’heure d’été.

Enregistrer et restaurer des fuseaux horaires
Décrit la prise en charge de TimeZoneInfo pour la sérialisation et la désérialisation des données de fuseau horaire et illustre certains scénarios dans lesquels ces fonctionnalités peuvent être utilisées.

Comment sauvegarder des fuseaux horaires dans une ressource intégrée
Décrit comment créer un fuseau horaire personnalisé et enregistrer ses informations dans un fichier de ressources.

Comment : restaurer des fuseaux horaires à partir d’une ressource incorporée
Décrit comment instancier des fuseaux horaires personnalisés qui ont été enregistrés dans un fichier de ressources incorporé.

effectuer des opérations arithmétiques avec des dates et des heures
Traite des problèmes liés à l’ajout, à la soustraction et à la comparaison des valeurs de DateTime et de DateTimeOffset.

Comment utiliser les fuseaux horaires dans les calculs de date et d’heure
Explique comment effectuer des arithmétiques de date et d’heure qui reflètent les règles d’ajustement d’un fuseau horaire.

Conversion entre DateTime et DateTimeOffset
Décrit comment effectuer une conversion entre les valeurs DateTime et DateTimeOffset.

temps de conversion entre les fuseaux horaires
Décrit comment convertir des heures d’un fuseau horaire à un autre.

Guide pratique pour résoudre des heures ambiguës
Décrit comment résoudre une heure ambiguë en la mappant à l’heure standard du fuseau horaire.

Guide pratique pour permettre aux utilisateurs de résoudre des heures ambiguës
Décrit comment permettre à un utilisateur de déterminer le mappage entre une heure locale ambiguë et l’heure universelle coordonnée.

Référence

System.TimeZoneInfo