Travailler avec DateTimes et des fuseaux horaires en C #
De nombreuses tâches de programmation, en particulier dans les tests, exigent la création d'objets DateTime
liés à des fuseaux horaires spécifiques. Alors que le constructeur DateTime
gère les temps locaux, UTC et non spécifiés, l'utilisation TimeZoneInfo
offre un contrôle plus précis.
Tiration de tirzoneinfo
Au lieu de compter uniquement sur la propriété DateTime
du constructeur TimeZone
, TimeZoneInfo
fournit des capacités de gestion de fuseau horaire et de conversion supérieures.
Structure de DateTime personnalisée
Cet exemple utilise une structure personnalisée, DateTimeWithZone
, pour encapsuler un DateTime
et son fuseau horaire associé:
<code class="language-csharp">public struct DateTimeWithZone { private readonly DateTime utcDateTime; private readonly TimeZoneInfo timeZone; public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone) { var dateTimeUnspec = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTimeUnspec, timeZone); this.timeZone = timeZone; } public DateTime UniversalTime => utcDateTime; public TimeZoneInfo TimeZone => timeZone; public DateTime LocalTime => TimeZoneInfo.ConvertTime(utcDateTime, timeZone); }</code>
Application pratique
pour créer un objet DateTimeWithZone
dans la zone du temps standard du Pacifique (PST):
<code class="language-csharp">var pstDateTime = new DateTimeWithZone(new DateTime(2023, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));</code>
Cette approche permet un travail transparent avec des objets DateTime
dans des fuseaux horaires spécifiques, facilitant les conversions entre UTC et l'heure locale comme requis.
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!