Maison > développement back-end > C++ > Comment créer un objet DateTime dans un fuseau horaire spécifique (par exemple, PST) en C # sans utiliser local ou UTC?

Comment créer un objet DateTime dans un fuseau horaire spécifique (par exemple, PST) en C # sans utiliser local ou UTC?

Barbara Streisand
Libérer: 2025-01-26 04:16:14
original
199 Les gens l'ont consulté

How to Create a DateTime Object in a Specific Time Zone (e.g., PST) in C# Without Using Local or UTC?

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 :

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

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!

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