C#可以将这些格式错误的月/年标记转换为一组日期时间对象吗?

Pau*_*uer 0 c# datetime drop-down-menu

在这种情况下,我有以下下拉列表拍卖实例,但没有标准来命名它们: <select name="marketId" onchange="javascript:reload()"><option value="27" selected="selected">Jul08Auc</option> <option value="61">Sep08Auc</option> <option value="623">Dec10Auc</option> <option value="743">Apr11Auc</option> <option value="66">Oct08Auc</option> <option value="81">Nov08Auc</option> <option value="287">October 2009</option> <option value="703">Mar11Auc</option> <option value="222">Jun09Auc</option> <option value="383">Mar10Auc</option> <option value="423">Apr10Auc</option> <option value="523">August 2010</option> <option value="21">Jun08Auc</option> <option value="105">Jan09Auc</option> <option value="142">March 2009</option> <option value="202">May 2009</option> <option value="303">November 2009</option> <option value="449">May10Auc</option> <option value="463">June 2010</option> <option value="503">July 2010</option> <option value="663">Jan11Auc</option> <option value="763">May11Auc</option> <option value="122">Feb09Auc</option> <option value="282">September 2009</option> <option value="41">Aug08Auc</option> <option value="543">September 2010</option> <option value="603">Nov10Auc</option> <option value="247">July 2009</option> <option value="346">Jan10Auc</option> <option value="363">Feb10</option> <option value="683">Feb11Auc</option> <option value="583">Oct10Auc</option> <option value="101">Dec08Auc</option> <option value="182">April 2009</option> <option value="262">August 2009</option> <option value="323">December 2009</option></select>

现在我的问题是这个,我将在帖子表格中找到其中一个选项,我需要将其中列出的月份和年份更改为一个不错的DateTime对象.

其中一些是链接"Oct10Auc",其中一些像"2009年12月",这意味着没有任何控制日期格式.

我想做的是拿"Oct10Auc",让代码看一下然后说,哦,是的,你想要一个10/1/2010的日期,或者在2009年9月说"你想要一个9/1的日期/ 2009" 年.

我的目标是不必编写一个巨大的字符串解析器,试图找出它正在查看的邮票的时间然后解码它.

我想知道C#或任何可用的API是否可以处理这个问题?

age*_*t-j 5

我将构建一个格式列表,然后为每个格式调用DateTime.TryParseExact.

static DateTime Parse(string dateString)
{
 string[] formats = new [] {"MMMYY\A\u\c", "MMMM YYYY"};
 DateTime parsedDate = new DateTime();
 foreach (string fmt in formats)
 {
    if (DateTime.TryParseExact (dateString, fmt, null, DateTimeStyles.Default, out parsedDate)
       return parsedDate;
 }
 throw new FormatException ();
}
Run Code Online (Sandbox Code Playgroud)

以下是格式选项的完整列表.你可以嵌入转义字符(比如你的AUC).