Dans le développement de logiciels, une gestion précise des opérations de date et d'heure est cruciale. Cela inclut la création et la manipulation d'objets DateTime dans un fuseau horaire spécifique. En C#, le constructeur DateTime fournit des options limitées pour définir le fuseau horaire. Pour contourner cette limitation, cet article explique comment utiliser la classe TimeZoneInfo pour créer un objet DateTime avec un fuseau horaire spécifié (tel que PST).
Il est recommandé d'utiliser la classe TimeZoneInfo dans l'espace de noms System.TimeZone au lieu de s'appuyer sur les options de fuseau horaire intégrées du constructeur DateTime. TimeZoneInfo fournit un ensemble complet de propriétés et de méthodes pour gérer les fuseaux horaires.
Afin de gérer de manière transparente DateTime dans différents fuseaux horaires, veuillez envisager de mettre en œuvre la structure personnalisée suivante :
<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 { get { return utcDateTime; } } public TimeZoneInfo TimeZone { get { return timeZone; } } public DateTime LocalTime { get { return TimeZoneInfo.ConvertTime(utcDateTime, timeZone); } } }</code>
Cette structure vous permet d'utiliser un objet DateTime en UTC et de le convertir facilement dans un fuseau horaire différent pour l'affichage ou le traitement. Il fournit des propriétés pour le temps universel (UTC), des informations sur le fuseau horaire et l'heure locale en fonction du fuseau horaire spécifié.
Pour créer un objet DateTime dans PST, vous pouvez utiliser le code suivant :
<code class="language-csharp">var pstTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var pstDateTime = new DateTimeWithZone(DateTime.Now, pstTimeZone);</code>
Cela crée un objet DateTimeWithZone qui représente la date et l'heure actuelles dans le fuseau horaire PST. Vous pouvez désormais accéder facilement aux informations sur l’heure UTC, l’heure PST et le fuseau horaire selon vos besoins.
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!