Créer un objet DateTime avec un fuseau horaire spécifique en C#
Lorsque vous effectuez des tests unitaires impliquant des changements de fuseau horaire, vous devez être capable de créer des objets DateTime dans un fuseau horaire non local spécifique.
Question :
Comment créer un objet DateTime avec un fuseau horaire spécifique (tel que PST) sans s'appuyer sur le fuseau horaire local ou le fuseau horaire UTC ?
Réponse :
Le constructeur DateTime autorise uniquement le fuseau horaire local, le fuseau horaire UTC ou des options non spécifiées. Par conséquent, nous pouvons utiliser TimeZoneInfo.
Solution :
Pour pouvoir créer des objets DateTime avec un fuseau horaire spécifique (par exemple PST), pensez à implémenter une structure personnalisée :
<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>
Cette structure permet de créer un objet DateTime avec un fuseau horaire spécifique et d'accéder à son heure UTC et son heure locale. Simplifiez votre code à l'aide des propriétés du corps d'expression.
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!