dotnet-timezone — GitHub Copilot skill: setup
This skill gives C# and .NET guidance for time zones, UTC conversion, DST, and Windows or IANA IDs. Use it for APIs, schedulers, and location lookups.
npx skills add github/awesome-copilot --skill dotnet-timezoneWhat dotnet-timezone does
The skill handles .NET work with TimeZoneInfo, DateTimeOffset, NodaTime, UTC conversion, and daylight saving transitions. It can resolve the time zone for a city, address, region, or country, return Windows and IANA IDs, and prepare copy-paste-ready C# code.
It points to references/timezone-index.md for Windows and IANA mappings and references/code-patterns.md for conversion, API, ASP.NET Core, scheduler, and DST edge-case patterns. The guidance uses TimeZoneConverter for cross-platform work and prefers NodaTime for strict time-zone arithmetic or recurring schedules affected by DST.
Install it when your agent needs concrete time-zone guidance for .NET projects. Skip it for tasks that do not involve time zones.
What it helps with
- resolve Windows and IANA IDs for a location
- convert UTC to a regional local time
- handle skipped or repeated DST timestamps
- choose a cross-platform .NET time-zone library
- design time storage for APIs and persistence
Example prompts for the agent
- Resolve the time zone for this address and return both IDs with ready-to-use C# code.
- Show a cross-platform UTC conversion with `TimeZoneConverter`.
- Review this recurring schedule for ambiguous and invalid DST timestamps.
How to install dotnet-timezone
1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill dotnet-timezone2GitHub CLI
gh skill install github/awesome-copilot dotnet-timezone3Manually: put the files in place
.github/skills/dotnet-timezone/SKILL.md1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill dotnet-timezone -a claude-code2Manually: put the files in place
~/.claude/skills/dotnet-timezone/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/dotnet-timezone/
Manually: put the files in place
.agents/skills/dotnet-timezone/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/dotnet-timezone/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
Platform CLI
gemini skills install https://github.com/github/awesome-copilot --path skills/dotnet-timezoneManually: put the files in place
.devin/skills/dotnet-timezone/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set554
The whole set →Similar
Questions about dotnet-timezone
How do I install dotnet-timezone in GitHub Copilot?
Run npx skills add github/awesome-copilot --skill dotnet-timezone or gh skill install github/awesome-copilot dotnet-timezone. The skill file is placed at .github/skills/dotnet-timezone/SKILL.md.
What does dotnet-timezone do?
It guides C# and .NET work with time-zone IDs, UTC conversion, DST transitions, and code patterns for TimeZoneInfo, DateTimeOffset, NodaTime, and TimeZoneConverter.
Which time-zone IDs does the skill provide?
For location requests it provides Windows and IANA IDs. That is useful when the same code needs to account for Windows, Linux, containers, NodaTime, or TimeZoneConverter.
Source text
SKILL.md · MIT
---
name: dotnet-timezone
description: '.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.'
---
# .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:
```text
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:
```csharp
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
© github · MIT · github/awesome-copilot