将字符串转换为指定的日期格式

Dev*_*per 1 c# datetime datetime-format asp.net-4.0

我无法通过抛出不正确格式的异常来将字符串转换为日期:

这是patterens:

    DD-MM-YYYY
    MM-DD-YYYY
    YYYY-DD-MM
    YYYY-MM-DD
    YYYYDDMM
    YYYYMMDD
Run Code Online (Sandbox Code Playgroud)

格式来自下拉列表,这是我尝试不同的方法,但仍然抛出异常:

 strCurrentFormat = rcboDateFormat.SelectedValue.ToString();

                 DateTime db = DateTime.ParseExact(strOldDate, "DD-MM-YYYY", CultureInfo.InvariantCulture);

                 //DateTime loadedDate = DateTime.ParseExact(strOldDate, strCurrentFormat, null);
Run Code Online (Sandbox Code Playgroud)

我之前已经解决了这个问题,通过取弦,拆分它们并将年,月和日移动到适当的格式,但这需要很长时间,如果有人知道更简单的方法,那将是一个巨大的帮助.

Ode*_*ded 5

两件事情:

首先 - 使用正确的格式字符串.D并且Y不是已知的格式说明符.d并且y是.

其次 - 您可以将格式放入字符串数组中,并使用获取该格式列表的ParseExact重载.

string[] formats = new string[] 
   {"dd-MM-yyyy",
    "MM-dd-yyyy",
    "yyyy-dd-MM",
    "yyyy-MM-dd",
    "yyyyddMM",
    "yyyyMMdd"};

DateTime db = DateTime.ParseExact(strOldDate, 
                                  formats, 
                                  CultureInfo.InvariantCulture,
                                  DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)

将按顺序尝试格式.