如果使用 c#,将 MMM yyyy 字符串日期转换为没有大量嵌套的 DateTime 值?

Convert a MMM yyyy string date to a DateTime value without a massive nested if using c#?

我有一个名为 strDate 的传入字符串变量,其格式为月份的前三个字符和四个字符的年份,如下所示:"Jul 2017".

我需要将该字符串转换为格式如下的日期:“7/1/2017”。我想知道是否有比按照下面显示的模式创建大量嵌套 if 来解释所有 12 个月更好的方法。我讨厌重复代码。谁能给个建议?

string strDate = "Jul 2017";
string strNewDate = "";

if (strDate.Substring(0,3) == "Jul")
{
    string strMonth = "7";
    strNewDate = strMonth + "/1/";
    strNewDate = strNewDate + strDate.Substring(4, 4);
    DateTime newDate = Convert.ToDateTime(strNewDate);
}

你只需要做一个DateTime.TryParse():

string input = "Jul 2017";      
DateTime newDateTime;
if(DateTime.TryParse(input, out newDateTime ))
{
    //newDateTime was parsed successfully
}

您的格式 ("MMM yyyy") 是 C# 识别的标准格式,应该可以很好地解析。但是,DateTime.TryParseExact 方法可让您指定希望字符串采用的 精确 格式。