将字符串解析为自定义日期格式c#

将字符串解析为自定义日期格式c#,c#,datetime,parsing,C#,Datetime,Parsing,我无法将字符串解析为正确的日期时间。我知道DateTime.ParseExact,但我不断引发异常。我错过了什么 const string formatString = "yyyyMMdd HHmmss"; const string fileName = @"C:\path.csv"; IEnumerable<Foo> dtos = File.ReadAllLines(fileName) .Skip(1) .Select(line => new

我无法将字符串解析为正确的日期时间。我知道DateTime.ParseExact,但我不断引发异常。我错过了什么

const string formatString = "yyyyMMdd HHmmss";
const string fileName = @"C:\path.csv";

IEnumerable<Foo> dtos = File.ReadAllLines(fileName)
        .Skip(1)
        .Select(line => new {line, columns = line.Split(';')})
        .Select(t =>
        {
            try
            {
                return new Foo
                {
                    Bar = DateTime.ParseExact(t.columns[0], formatString, CultureInfo.InvariantCulture, DateTimeStyles.None)
                };
            }
            catch (FormatException)
            {
                Console.WriteLine("{0} is not in the correct format.", t.columns[0])
            }
            return null;
        });
常量字符串formatString=“yyyyMMdd HHmmss”; 常量字符串文件名=@“C:\path.csv”; IEnumerable dtos=File.ReadAllLines(文件名) .Skip(1) .Select(line=>new{line,columns=line.Split(“;”)}) .选择(t=> { 尝试 { 返回新Foo { Bar=DateTime.ParseExact(t.columns[0],formatString,CultureInfo.InvariantCulture,DateTimeStyles.None) }; } 捕获(格式化异常) { Console.WriteLine(“{0}的格式不正确。”,t.columns[0]) } 返回null; }); 捕获消息是

20110102 170100的格式不正确

编辑:链接到助手要求的错误截图(所以不要让新帐户添加图像)。

代码有效。您必须读取不同的数据:

const string formatString = "yyyyMMdd HHmmss";
static void Main(string[] args)
{
    string input = "20110102 170100";
    DateTime Bar = DateTime.ParseExact(input, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None);
}

捕获的消息中显示了t.columns[0]的值。
我认为它不是您认为的值。看见代码显然与该值一起工作,因此如果它对您不起作用,则不可能是该值。你猜怎么着,它确实起作用了。尝试修剪你的
t.Columns[0]
,可能它有一些不需要的空白。@mjwills我确实编辑过它。问题似乎是双重属性,而不是dateTime属性。谢谢你的回答。下次,最好展示你的全部代码。通过不显示您也在分析的双精度值,我们(包括您)认为日期格式是问题所在。@PaulKaram是的,我的错,我试图显示最小的示例,这就是为什么我忽略了其他属性,因为我认为它们与手头的问题无关。善意执行得不好。双解析中的不变区域性解决了我的问题。