【问题标题】:Tryparse not working for me and ParseExact works but it fails when extra space is includedTryparse 不适合我并且 ParseExact 可以工作,但是当包含额外空间时它会失败
【发布时间】:2018-09-21 19:06:26
【问题描述】:

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();

有什么想法吗?谢谢

【问题讨论】:

    标签: c# datetime parsing tryparse


    【解决方案1】:

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

    接下来你只需要向你的方法传入一个额外的参数,DateTimeStylesDateTimeStyles.AllowWhiteSpaces

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

    小提琴here

    【讨论】:

    • 谢谢伙计。我还可以看到我可以传递 string[] 格式。格式数组?我会试试你的方法。甚至没有注意到你建议的方法。永远谦虚,向你们学习。谢谢!
    • @Max 是一个格式数组。对于您的情况,最好使用DateTimeStyles.AllowWhiteSpaces,但对于未来的问题需要牢记这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2014-05-05
    • 2021-01-22
    相关资源
    最近更新 更多