All skills
github avatar

/dotnet-timezone

@b3de201 official
by githubgithub/awesome-copilot40k stars
5,040

.NET timezone handling guidance for C# applications. Use when working with TimeZoneInfo, DateTimeOffset, NodaTime, UTC conversion, daylight saving time, scheduling across timezones, cross-platform Windows/IANA timezone IDs, or when a .NET user needs the timezone for a city, address, region, or country and copy-paste-ready C# code.

Use this Skill: https://skilld.dev/gh/github/awesome-copilot/dotnet-timezone

This session only. Nothing lands on disk.

SKILL.md

≈87 tokens always: the name and description. ≈881 when used: this file. ≈2.2k more on demand in 2 files.

.NET Timezone

Resolve timezone questions for .NET and C# code with production-safe guidance and copy-paste-ready snippets.

Start With The Right Path

Identify the request type first:

  • Address or location lookup
  • Timezone ID lookup
  • UTC/local conversion
  • Cross-platform timezone compatibility
  • Scheduling or DST handling
  • API or persistence design

If the library is unclear, default to TimeZoneConverter for cross-platform work. If the scenario involves recurring schedules or strict DST rules, prefer NodaTime.

Resolve Addresses And Locations

If the user provides an address, city, region, country, or document containing place names:

  1. Extract each location from the input.
  2. Read references/timezone-index.md for common Windows and IANA mappings.
  3. If the exact location is not listed, infer the correct IANA zone from geography, then map it to the Windows ID.
  4. Return both IDs and a ready-to-use C# example.

For each resolved location, provide:

Location: <resolved place>
Windows ID: <windows id>
IANA ID: <iana id>
UTC offset: <standard offset and DST offset when relevant>
DST: <yes/no>

Then include a cross-platform snippet like:

using TimeZoneConverter;

TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("Asia/Colombo");
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);

If multiple locations are present, include one block per location and then a combined multi-timezone snippet.

If a location is ambiguous, list the possible timezone matches and ask the user to choose the correct one.

Look Up Timezone IDs

Use references/timezone-index.md for Windows to IANA mappings.

Always provide both formats:

  • Windows ID for TimeZoneInfo.FindSystemTimeZoneById() on Windows
  • IANA ID for Linux, containers, NodaTime, and TimeZoneConverter

Generate Code

Use references/code-patterns.md and pick the smallest pattern that fits:

  • Pattern 1: TimeZoneInfo for Windows-only code
  • Pattern 2: TimeZoneConverter for cross-platform conversion
  • Pattern 3: NodaTime for strict timezone arithmetic and DST-sensitive scheduling
  • Pattern 4: DateTimeOffset for APIs and data transfer
  • Pattern 5: ASP.NET Core persistence and presentation
  • Pattern 6: recurring jobs and schedulers
  • Pattern 7: ambiguous and invalid DST timestamps

Always include package guidance when recommending third-party libraries.

Warn About Common Pitfalls

Mention the relevant warning when applicable:

  • TimeZoneInfo.FindSystemTimeZoneById() is platform-specific for timezone IDs.
  • Avoid storing DateTime.Now in databases; store UTC instead.
  • Treat DateTimeKind.Unspecified as a bug risk unless it is deliberate input.
  • DST transitions can skip or repeat local times.
  • Azure Windows and Azure Linux environments may expect different timezone ID formats.

Response Shape

For address and location requests:

  1. Return the resolved timezone block for each location.
  2. State the recommended implementation in one sentence.
  3. Include a copy-paste-ready C# snippet.

For code and architecture requests:

  1. State the recommended approach in one sentence.
  2. Provide the timezone IDs if relevant.
  3. Include the minimal working code snippet.
  4. Mention the package requirement if needed.
  5. Add one pitfall warning if it matters.

Keep responses concise and code-first.

References

  • references/timezone-index.md: common Windows and IANA timezone mappings
  • references/code-patterns.md: ready-to-use .NET timezone patterns

Source: SKILL.md on GitHub

No alerts16d4 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill provides guidance for .NET timezone handling and is generally safe. It identifies standard external dependencies and has a minor surface for indirect prompt injection when processing user-provided location data to generate code snippets.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at b3de201. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 19 hours ago.

Activeupdated 6 months ago
  • dotnet
  • csharp
  • timezone
  • timezoneinfo
  • nodatime
  • timezonconverter
  • datetimeoffset
  • dst
  • scheduling

README badge

README badge for github/awesome-copilot/dotnet-timezone

Provides timezone ID lookups, UTC/local conversions, and copy-paste C# code for .NET applications using TimeZoneInfo, TimeZoneConverter, or NodaTime. Handles address-to-timezone resolution, cross-platform Windows/IANA ID mapping, daylight saving time edge cases, and scheduling scenarios.

Generated from the current SKILL.md.

Does this skill work with NodaTime?
Yes. The skill recommends NodaTime for strict timezone arithmetic and DST-sensitive scheduling, and includes code patterns for it in the references.
Can this skill resolve a timezone from a city name or address?
Yes. It extracts locations from input, looks them up in the timezone index, and returns both Windows and IANA timezone IDs with UTC offsets and a ready-to-use C# snippet.
Does this handle cross-platform timezone compatibility?
Yes. It defaults to TimeZoneConverter for cross-platform work and provides both Windows and IANA timezone ID formats to handle Windows, Linux, and container environments.
What should I use for storing dates in a database?
Always store UTC in databases, not local time or DateTime.Now. The skill warns against this common pitfall.
Does this cover daylight saving time edge cases?
Yes. It includes guidance on DST transitions that can skip or repeat local times, and recommends NodaTime or specific code patterns for handling ambiguous and invalid DST timestamps.

Generated from the current SKILL.md. These answers refresh after source changes.