using System.Globalization;
public static void Main()
var date = new DateTime(1900, 12, 11);
var enUs = new CultureInfo("en-US");
var enGb = new CultureInfo("en-GB");
var deDe = new CultureInfo("de-DE");
var strUs = date.ToString(enUs);
var strGb = date.ToString(enGb);
var strDe = date.ToString(deDe);
Console.WriteLine(strUs);
Console.WriteLine(strGb);
Console.WriteLine(strDe);
Console.WriteLine("-------------------------");
var inputEnUs = "Apr 6, 2009";
var inputEnGb = "06-Apr-2009";
var inputFrFr = "6 avr. 2009";
var inputDeDe = "06.04.2009";
var inputs = new [] {inputEnUs , inputEnGb, inputFrFr, inputDeDe };
foreach (var dateString in inputs) {
var output = ParseMultiCulture(dateString);
Console.WriteLine(output.ToString("yyyy-MM-dd"));
private static DateTime ParseMultiCulture(string dateString) {
string[] formatsEnUs = {"MMM d, yyyy"};
string[] formatsEnGB = {"dd-MMM-yyyy"};
string[] formatsFrFr = {"d MMM yyyy"};
string[] formatsDeDe = {"dd.MM.yyyy"};
if (DateTime.TryParseExact(dateString, formatsEnUs, new CultureInfo("en-US"), DateTimeStyles.None, out output)) {
if (DateTime.TryParseExact(dateString, formatsEnGB, new CultureInfo("en-GB"), DateTimeStyles.None, out output)) {
if (DateTime.TryParseExact(dateString, formatsFrFr, new CultureInfo("fr-FR"), DateTimeStyles.None, out output)) {
if (DateTime.TryParseExact(dateString, formatsDeDe, new CultureInfo("de-De"), DateTimeStyles.None, out output)) {
throw new NotSupportedException("Given datestring is in a format that is not supported.");