dotnet-timezone

Par github · awesome-copilot

Guide de gestion des fuseaux horaires .NET pour les applications C#. À utiliser lorsqu'on travaille avec `TimeZoneInfo`, `DateTimeOffset`, NodaTime, la conversion UTC, l'heure d'été, la planification sur plusieurs fuseaux horaires, les identifiants de fuseaux horaires Windows/IANA multiplateformes, ou lorsqu'un utilisateur .NET a besoin du fuseau horaire pour une ville, une adresse, une région ou un pays, ainsi que du code C# prêt à copier-coller.

npx skills add https://github.com/github/awesome-copilot --skill dotnet-timezone

.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 :

  1. Extrayez chaque localisation de l'entrée.
  2. Consultez references/timezone-index.md pour les mappages Windows et IANA courants.
  3. 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.
  4. 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, NodaTime et TimeZoneConverter

Générez du code

Utilisez references/code-patterns.md et choisissez le plus petit pattern qui convient :

  • Pattern 1 : TimeZoneInfo pour le code Windows uniquement
  • Pattern 2 : TimeZoneConverter pour la conversion multiplateforme
  • Pattern 3 : NodaTime pour l'arithmétique stricte de fuseau horaire et la planification sensible au changement d'heure
  • Pattern 4 : DateTimeOffset pour 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.Now dans les bases de données ; stockez l'UTC à la place.
  • Traitez DateTimeKind.Unspecified comme 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 :

  1. Retournez le bloc de fuseau horaire résolu pour chaque localisation.
  2. Énoncez l'implémentation recommandée en une phrase.
  3. Incluez un snippet C# prêt à copier-coller.

Pour les demandes de code et d'architecture :

  1. Énoncez l'approche recommandée en une phrase.
  2. Fournissez les IDs de fuseau horaire s'ils sont pertinents.
  3. Incluez le snippet de code minimal fonctionnel.
  4. Mentionnez le besoin de package s'il y a lieu.
  5. 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 IANA
  • references/code-patterns.md : patterns .NET de fuseau horaire prêts à l'emploi

Skills similaires