NodaTime by Jon Skeet

<PackageReference Include="NodaTime" Version="2.1.5" />

 LocalDatePattern

public sealed class LocalDatePattern : IPattern<LocalDate>
Represents a pattern for parsing and formatting LocalDate values.
public static LocalDatePattern Iso { get; }

Gets an invariant local date pattern which is ISO-8601 compatible. This corresponds to the text pattern "uuuu'-'MM'-'dd".

public string PatternText { get; }

Gets the pattern text for this pattern, as supplied on creation.

public LocalDate TemplateValue { get; }

Gets the value used as a template for parsing: any field values unspecified in the pattern are taken from the template.

public static LocalDatePattern Create(string patternText, CultureInfo cultureInfo, LocalDate templateValue)

Creates a pattern for the given pattern text, culture, and template value.

public static LocalDatePattern Create(string patternText, CultureInfo cultureInfo)

Creates a pattern for the given pattern text and culture, with a template value of 2000-01-01.

public static LocalDatePattern CreateWithCurrentCulture(string patternText)

Creates a pattern for the given pattern text in the current thread's current culture.

public static LocalDatePattern CreateWithInvariantCulture(string patternText)

Creates a pattern for the given pattern text in the invariant culture.

Formats the given value as text according to the rules of this pattern, appending to the given StringBuilder.

public string Format(LocalDate value)

Formats the given local date as text according to the rules of this pattern.

public ParseResult<LocalDate> Parse(string text)

Parses the given text value according to the rules of this pattern.

Creates a pattern like this one, but with the template value modified to use the specified calendar system.

Creates a pattern for the same original pattern text as this pattern, but with the specified culture.

public LocalDatePattern WithTemplateValue(LocalDate newTemplateValue)

Creates a pattern like this one, but with the specified template value.