TryParseExact returns false, though I don't know why

I think your current DateSeparator is . (dot) and / automatically replace itself to it.

/ separator has a special meaning of "replace me with the current culture's date separator".

CultureInfo c = new CultureInfo("de-DE");
Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot)

Take a look at the "/" Custom Format Specifier.


As @Soner Gönül points out, the / is taken as "the date separator" in custom format strings. If you want to only accept / characters, you need to escape them:

var format = new string[] { @"yyyy\/MM\/dd" };