{"id":"cc8983a1-baf1-4dd2-ae7e-2918b11ed664","shortId":"PHVuE9","kind":"skill","title":"Dotnet Timezone","tagline":"Awesome Copilot skill by Github","description":"# .NET Timezone\n\nResolve timezone questions for .NET and C# code with production-safe guidance and copy-paste-ready snippets.\n\n## Start With The Right Path\n\nIdentify the request type first:\n\n- Address or location lookup\n- Timezone ID lookup\n- UTC/local conversion\n- Cross-platform timezone compatibility\n- Scheduling or DST handling\n- API or persistence design\n\nIf the library is unclear, default to `TimeZoneConverter` for cross-platform work. If the scenario involves recurring schedules or strict DST rules, prefer `NodaTime`.\n\n## Resolve Addresses And Locations\n\nIf the user provides an address, city, region, country, or document containing place names:\n\n1. Extract each location from the input.\n2. Read `references/timezone-index.md` for common Windows and IANA mappings.\n3. If the exact location is not listed, infer the correct IANA zone from geography, then map it to the Windows ID.\n4. Return both IDs and a ready-to-use C# example.\n\nFor each resolved location, provide:\n\n```text\nLocation: <resolved place>\nWindows ID: <windows id>\nIANA ID: <iana id>\nUTC offset: <standard offset and DST offset when relevant>\nDST: <yes/no>\n```\n\nThen include a cross-platform snippet like:\n\n```csharp\nusing TimeZoneConverter;\n\nTimeZoneInfo tz = TZConvert.GetTimeZoneInfo(\"Asia/Colombo\");\nDateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);\n```\n\nIf multiple locations are present, include one block per location and then a combined multi-timezone snippet.\n\nIf a location is ambiguous, list the possible timezone matches and ask the user to choose the correct one.\n\n## Look Up Timezone IDs\n\nUse `references/timezone-index.md` for Windows to IANA mappings.\n\nAlways provide both formats:\n\n- Windows ID for `TimeZoneInfo.FindSystemTimeZoneById()` on Windows\n- IANA ID for Linux, containers, `NodaTime`, and `TimeZoneConverter`\n\n## Generate Code\n\nUse `references/code-patterns.md` and pick the smallest pattern that fits:\n\n- Pattern 1: `TimeZoneInfo` for Windows-only code\n- Pattern 2: `TimeZoneConverter` for cross-platform conversion\n- Pattern 3: `NodaTime` for strict timezone arithmetic and DST-sensitive scheduling\n- Pattern 4: `DateTimeOffset` for APIs and data transfer\n- Pattern 5: ASP.NET Core persistence and presentation\n- Pattern 6: recurring jobs and schedulers\n- Pattern 7: ambiguous and invalid DST timestamps\n\nAlways include package guidance when recommending third-party libraries.\n\n## Warn About Common Pitfalls\n\nMention the relevant warning when applicable:\n\n- `TimeZoneInfo.FindSystemTimeZoneById()` is platform-specific for timezone IDs.\n- Avoid storing `DateTime.Now` in databases; store UTC instead.\n- Treat `DateTimeKind.Unspecified` as a bug risk unless it is deliberate input.\n- DST transitions can skip or repeat local times.\n- Azure Windows and Azure Linux environments may expect different timezone ID formats.\n\n## Response Shape\n\nFor address and location requests:\n\n1. Return the resolved timezone block for each location.\n2. State the recommended implementation in one sentence.\n3. Include a copy-paste-ready C# snippet.\n\nFor code and architecture requests:\n\n1. State the recommended approach in one sentence.\n2. Provide the timezone IDs if relevant.\n3. Include the minimal working code snippet.\n4. Mention the package requirement if needed.\n5. Add one pitfall warning if it matters.\n\nKeep responses concise and code-first.\n\n## References\n\n- `references/timezone-index.md`: common Windows and IANA timezone mappings\n- `references/code-patterns.md`: ready-to-use .NET timezone patterns","tags":["dotnet","timezone","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/dotnet-timezone","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T03:40:30.898Z","embedding":null,"createdAt":"2026-04-18T20:32:51.064Z","updatedAt":"2026-04-22T03:40:30.898Z","lastSeenAt":"2026-04-22T03:40:30.898Z","tsv":"'1':104,267,396,427 '2':111,275,405,435 '3':120,283,413,442 '4':142,295,449 '5':303,456 '6':310 '7':316 'add':457 'address':39,87,95,392 'alway':237,322 'ambigu':211,317 'api':57,298 'applic':341 'approach':431 'architectur':425 'arithmet':288 'asia/colombo':183 'ask':218 'asp.net':304 'avoid':350 'awesom':3 'azur':377,380 'block':196,401 'bug':362 'c':16,152,420 'category-awesome-copilot' 'choos':222 'citi':96 'code':17,256,273,423,447,469 'code-first':468 'combin':202 'common':115,334,473 'compat':52 'concis':466 'contain':101,251 'convers':47,281 'copi':25,417 'copilot':4 'copy-paste-readi':24,416 'core':305 'correct':130,224 'countri':98 'cross':49,71,173,279 'cross-platform':48,70,172,278 'csharp':177 'data':300 'databas':354 'datetim':184 'datetime.now':352 'datetime.utcnow':187 'datetimekind.unspecified':359 'datetimeoffset':296 'default':66 'deliber':367 'design':60 'differ':385 'document':100 'dotnet':1 'dst':55,82,167,291,320,369 'dst-sensit':290 'environ':382 'exact':123 'exampl':153 'expect':384 'extract':105 'first':38,470 'fit':265 'format':240,388 'generat':255 'geographi':134 'github':7 'guidanc':22,325 'handl':56 'iana':118,131,163,235,247,476 'id':44,141,145,162,164,229,242,248,349,387,439 'identifi':34 'implement':409 'includ':170,194,323,414,443 'infer':128 'input':110,368 'instead':357 'invalid':319 'involv':77 'job':312 'keep':464 'librari':63,331 'like':176 'linux':250,381 'list':127,212 'local':185,375 'locat':41,89,107,124,157,160,191,198,209,394,404 'look':226 'lookup':42,45 'map':119,136,236,478 'match':216 'matter':463 'may':383 'mention':336,450 'minim':445 'multi':204 'multi-timezon':203 'multipl':190 'name':103 'need':455 'net':8,14,484 'nodatim':85,252,284 'offset':166 'one':195,225,411,433,458 'packag':324,452 'parti':330 'past':26,418 'path':33 'pattern':263,266,274,282,294,302,309,315,486 'per':197 'persist':59,306 'pick':260 'pitfal':335,459 'place':102 'platform':50,72,174,280,345 'platform-specif':344 'possibl':214 'prefer':84 'present':193,308 'product':20 'production-saf':19 'provid':93,158,238,436 'question':12 'read':112 'readi':27,149,419,481 'ready-to-us':148,480 'recommend':327,408,430 'recur':78,311 'refer':471 'references/code-patterns.md':258,479 'references/timezone-index.md':113,231,472 'region':97 'relev':338,441 'repeat':374 'request':36,395,426 'requir':453 'resolv':10,86,156,399 'respons':389,465 'return':143,397 'right':32 'risk':363 'rule':83 'safe':21 'scenario':76 'schedul':53,79,293,314 'sensit':292 'sentenc':412,434 'shape':390 'skill':5 'skip':372 'smallest':262 'snippet':28,175,206,421,448 'source-github' 'specif':346 'start':29 'state':406,428 'store':351,355 'strict':81,286 'text':159 'third':329 'third-parti':328 'time':376 'timestamp':321 'timezon':2,9,11,43,51,205,215,228,287,348,386,400,438,477,485 'timezoneconvert':68,179,254,276 'timezoneinfo':180,268 'timezoneinfo.converttimefromutc':186 'timezoneinfo.findsystemtimezonebyid':244,342 'transfer':301 'transit':370 'treat':358 'type':37 'tz':181,188 'tzconvert.gettimezoneinfo':182 'unclear':65 'unless':364 'use':151,178,230,257,483 'user':92,220 'utc':165,356 'utc/local':46 'warn':332,339,460 'window':116,140,161,233,241,246,271,378,474 'windows-on':270 'work':73,446 'yes/no':168 'zone':132","prices":[{"id":"07019cfb-2ff5-40a2-be16-3a25a59c9629","listingId":"cc8983a1-baf1-4dd2-ae7e-2918b11ed664","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:32:51.064Z"}],"sources":[{"listingId":"cc8983a1-baf1-4dd2-ae7e-2918b11ed664","source":"github","sourceId":"github/awesome-copilot/dotnet-timezone","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/dotnet-timezone","isPrimary":false,"firstSeenAt":"2026-04-18T21:49:12.233Z","lastSeenAt":"2026-04-22T00:52:08.262Z"},{"listingId":"cc8983a1-baf1-4dd2-ae7e-2918b11ed664","source":"skills_sh","sourceId":"github/awesome-copilot/dotnet-timezone","sourceUrl":"https://skills.sh/github/awesome-copilot/dotnet-timezone","isPrimary":true,"firstSeenAt":"2026-04-18T20:32:51.064Z","lastSeenAt":"2026-04-22T03:40:30.898Z"}],"details":{"listingId":"cc8983a1-baf1-4dd2-ae7e-2918b11ed664","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"dotnet-timezone","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/dotnet-timezone"},"updatedAt":"2026-04-22T03:40:30.898Z"}}