Unclear description regarding equality of "K" and "zzz" time zone format specifier
- Dominant language
- No language data
- Stars
- 4.8k
- Forks
- 6.1k
- Avg merge
- 15h 21m
- Merged PRs (30d)
- 370
Description
### Describe the issue or suggestion
The [documentation](https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#KSpecifier) states:
>For DateTimeOffset values, the "K" format specifier is equivalent to the "zzz" format specifier [...]
while this may be the case for serialisation, this behaviour differs when deserializing time strings as shown in the example below.
```csharp
const string inputWithOffset = "2023-08-31T07:00:00+02:00";
const string utcInput = "2023-08-31T07:00:00Z";
const string inputWithoutOffset = "2023-08-31T07:00:00";
DateTimeOffset.ParseExact(inputWithOffset, "yyyy'-'MM'-'dd'T'HH':'mm':'ssK", null, DateTimeStyles.None); //works
DateTimeOffset.ParseExact(utcInput, "yyyy'-'MM'-'dd'T'HH':'mm':'ssK", null, DateTimeStyles.None); //works
DateTimeOffset.ParseExact(inputWithoutOffset, "yyyy'-'MM'-'dd'T'HH':'mm':'ssK", null, DateTimeStyles.None); //works
DateTimeOffset.ParseExact(inputWithOffset, "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz", null, DateTimeStyles.None); //works
DateTimeOffset.ParseExact(utcInput, "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz", null, DateTimeStyles.None); //FormatException
DateTimeOffset.ParseExact(inputWithoutOffset, "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz", null, DateTimeStyles.None); //FormatException
```
→ the "zzz" specifier does not allow the "Z" offset and a missing offset, while the "K" specifier accepts those.
I think this is worth to be mentioned in the documentation.
---
#### Document Details
⚠ *Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.*
* ID: dda93f14-f1b5-fde6-e441-302cdac261ab
* Version Independent ID: 96abc7c4-3719-82da-e271-881d62f0640f
* Platform ID: 58fb1aa0-4c4c-dd6c-590b-194d21204c54
* Content: [Custom date and time format strings - .NET](https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#KSpecifier)
* Content Source: [docs/standard/base-types/custom-date-and-time-format-strings.md](https://github.com/dotnet/docs/blob/main/docs/standard/base-types/custom-date-and-time-format-strings.md)
* Service: **dotnet-fundamentals**
* GitHub Login: @adegeo
* Microsoft Alias: **adegeo**
Contributor guide
Assessment
This issue has not been assessed yet.