无法将类型'string'隐式转换为'System.DateTime',转换特定列的数据类型

时间:2014-02-20 02:22:04

标签: c# asp.net datetime

我是ASP.NET和C#的新手。 我想知道如何将一个字段从字符串转换为DataTime。

string[] Lines = File.ReadAllLines(fileName);
string[] Fields;

//Remove Header line
Lines = Lines.Skip(1).ToArray();
List<CountTable> emList = new List<CountTable>();
foreach (var line in Lines)
{
    Fields = line.Split(new char[] { ',' });
    emList.Add(
        new CountTable
        {
            CountID = Fields[0].Replace("\"", ""),
            Date = Fields[1].Replace("\"", ""),
            UserID = Fields[2].Replace("\"", ""),
            PrinterID = Fields[3].Replace("\"", ""),
            Color = Fields[4].Replace("\"", ""),
            BW = Fields[5].Replace("\"", ""),
        });
}

我收到了这个错误

  

无法将类型'string'隐式转换为'System.DateTime'

在这一行

Date = Fields[1].Replace("\"", ""),

任何人都可以帮我解决错误的语法。

谢谢!

3 个答案:

答案 0 :(得分:1)

您是否尝试将字符串转换为DateTime对象?

见下面的代码:

string[] Lines = File.ReadAllLines(fileName); string[] Fields;
//Remove Header line
Lines = Lines.Skip(1).ToArray();
List<CountTable> emList = new List<CountTable>();
foreach (var line in Lines)
{
    Fields = line.Split(new char[] { ',' });
    emList.Add(
        new CountTable
        {
            CountID = Fields[0].Replace("\"", ""),
            Date = Convert.ToDateTime(Fields[1].Replace("\"", "")),
            UserID = Fields[2].Replace("\"", ""),
            PrinterID = Fields[3].Replace("\"", ""),
            Color = Fields[4].Replace("\"", ""),
            BW = Fields[5].Replace("\"", ""),
        });
}

答案 1 :(得分:1)

string无法隐式转换为DateTime。您必须使用DateTime.Parse()string明确转换为DateTime

Date = DateTime.Parse(Fields[1].Replace("\"", ""))

答案 2 :(得分:0)

您必须明确地将string转换为DateTime。我建议使用DateTime.ParseExact Method。这一行

Date = Fields[1].Replace("\"", ""),

应更改为此

Date = DateTime.ParseExact(Fields[1].Replace("\"", ""), "MM/dd/yyyy", null),

请注意,使用上面的代码我会假设文件中的日期为MM/dd/yyyy格式,即02/20/2014。如果它有其他格式,则必须将"MM/dd/yyyy"更改为其他格式。