C# Tryparse不适用于我,ParseExact可以工作,但如果包含额外的空间,它就会失败

C# Tryparse不适用于我,ParseExact可以工作,但如果包含额外的空间,它就会失败,c#,datetime,parsing,tryparse,C#,Datetime,Parsing,Tryparse,Tryparse不适用于我,ParseExact可以工作,但如果包含额外空间,则会失败: //Tryparse string dateTimeString = "Sep 10 08:19"; DateTime dateAndTime; if (DateTime.TryParse(dateTimeString, out dateAndTime)) { string temp = dateAndTime.ToString(); //"9/21/2018 10:08:00 AM" ???

Tryparse不适用于我,ParseExact可以工作,但如果包含额外空间,则会失败:

//Tryparse
string dateTimeString = "Sep 10 08:19";
DateTime dateAndTime;

if (DateTime.TryParse(dateTimeString, out dateAndTime))
{
    string temp = dateAndTime.ToString();   //"9/21/2018 10:08:00 AM" ??????? why?
}

//ParseExact works fine but it won't work with extra spaces in the date
string format = "MMM d HH:mm";
//dateTimeString = "Sep 10 08:19"; //works fine with this string
dateTimeString   = "Sep  9 08:19"; //notice extra extra space between "Sep" and "9"
dateAndTime = DateTime.ParseExact(dateTimeString, format, System.Globalization.CultureInfo.InvariantCulture); //Exception here
string temp2 = dateAndTime.ToString();

有什么想法吗?谢谢

所以首先你应该使用
TryParseExact()
而不是
ParseExact()
,因为这是与
TryParse()
相比较的正确方法

接下来,您只需要向方法传递一个额外的参数,即值
DateTimeStyles.AllowHiteSpaces

if(DateTime.TryParseExact(
   "Sep 10 08:19", 
   "MMM d HH:mm", 
   CultureInfo.InvariantCulture, 
   DateTimeStyles.AllowWhiteSpaces, 
   out dateAndTime))
{
    //Parsed correctly, do something
}

小提琴

谢谢你,伙计。我还可以看到我可以传递字符串[]格式。格式数组?我会试试你的方法。甚至没有注意到你建议的方法。永远谦虚,向你们学习。谢谢@Max是一个格式数组。对于您的案例,最好使用
DateTimeStyles.allowHiteSpaces
,但在将来的问题上要记住这一点