.NET Timezone
Résolvez les questions de fuseau horaire pour le code .NET et C# avec des conseils sûrs pour la production et des snippets prêts à copier-coller.
Commencez par le bon chemin
Identifiez d'abord le type de requête :
- Recherche d'adresse ou de localisation
- Recherche d'ID de fuseau horaire
- Conversion UTC/heure locale
- Compatibilité des fuseaux horaires multiplateforme
- Planification ou gestion de l'heure d'été
- Design d'API ou de persistance
Si la bibliothèque n'est pas claire, utilisez par défaut TimeZoneConverter pour le travail multiplateforme. Si le scénario implique des planifications récurrentes ou des règles strictes de changement d'heure, préférez NodaTime.
Résolvez les adresses et localisations
Si l'utilisateur fournit une adresse, une ville, une région, un pays ou un document contenant des noms de lieux :
- Extrayez chaque localisation de l'entrée.
- Consultez
references/timezone-index.mdpour les mappages Windows et IANA courants. - Si la localisation exacte n'est pas listée, déduisez la bonne zone IANA à partir de la géographie, puis mappez-la à l'ID Windows.
- Retournez les deux IDs et un exemple C# prêt à l'emploi.
Pour chaque localisation résolue, fournissez :
Location: <resolved place>
Windows ID: <windows id>
IANA ID: <iana id>
UTC offset: <standard offset and DST offset when relevant>
DST: <yes/no>
Incluez ensuite un snippet multiplateforme comme :
using TimeZoneConverter;
TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("Asia/Colombo");
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
Si plusieurs localisations sont présentes, incluez un bloc par localisation puis un snippet multizone combiné.
Si une localisation est ambiguë, listez les possibles correspondances de fuseau horaire et demandez à l'utilisateur de choisir la bonne.
Recherchez les IDs de fuseau horaire
Utilisez references/timezone-index.md pour les mappages Windows vers IANA.
Fournissez toujours les deux formats :
- ID Windows pour
TimeZoneInfo.FindSystemTimeZoneById()sous Windows - ID IANA pour Linux, conteneurs,
NodaTimeetTimeZoneConverter
Générez du code
Utilisez references/code-patterns.md et choisissez le plus petit pattern qui convient :
- Pattern 1 :
TimeZoneInfopour le code Windows uniquement - Pattern 2 :
TimeZoneConverterpour la conversion multiplateforme - Pattern 3 :
NodaTimepour l'arithmétique stricte de fuseau horaire et la planification sensible au changement d'heure - Pattern 4 :
DateTimeOffsetpour les APIs et le transfert de données - Pattern 5 : persistance et présentation ASP.NET Core
- Pattern 6 : tâches récurrentes et planificateurs
- Pattern 7 : timestamps DST ambigus et invalides
Incluez toujours les conseils de package au moment de recommander des bibliothèques tierces.
Avertissez sur les pièges courants
Mentionnez l'avertissement pertinent le cas échéant :
TimeZoneInfo.FindSystemTimeZoneById()dépend de la plateforme pour les IDs de fuseau horaire.- Évitez de stocker
DateTime.Nowdans les bases de données ; stockez l'UTC à la place. - Traitez
DateTimeKind.Unspecifiedcomme un risque de bug sauf s'il s'agit d'une entrée délibérée. - Les transitions DST peuvent sauter ou répéter les heures locales.
- Les environnements Azure Windows et Azure Linux peuvent attendre différents formats d'ID de fuseau horaire.
Forme de la réponse
Pour les demandes d'adresse et de localisation :
- Retournez le bloc de fuseau horaire résolu pour chaque localisation.
- Énoncez l'implémentation recommandée en une phrase.
- Incluez un snippet C# prêt à copier-coller.
Pour les demandes de code et d'architecture :
- Énoncez l'approche recommandée en une phrase.
- Fournissez les IDs de fuseau horaire s'ils sont pertinents.
- Incluez le snippet de code minimal fonctionnel.
- Mentionnez le besoin de package s'il y a lieu.
- Ajoutez un avertissement de piège si c'est important.
Gardez les réponses concises et axées sur le code.
Références
references/timezone-index.md: mappages courants de fuseaux horaires Windows et IANAreferences/code-patterns.md: patterns .NET de fuseau horaire prêts à l'emploi