C#DateTime.ParseExact
我有一个以制表符分隔的文件,它正在被解析,然后被插入到数据库中。当我遇到date列时,我在解析它时遇到了困难 我的密码是:C#DateTime.ParseExact,c#,parsing,datetime,C#,Parsing,Datetime,我有一个以制表符分隔的文件,它正在被解析,然后被插入到数据库中。当我遇到date列时,我在解析它时遇到了困难 我的密码是: var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture); 行[i]中的字符串格式为:7/7/2011 10:48,10/20/2011 6:27 我得到的例外是 日历中不支持由字符串表示的日期时间 System.Globalization.Gregor
var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture);
行[i]
中的字符串格式为:7/7/2011 10:48
,10/20/2011 6:27
我得到的例外是
日历中不支持由字符串表示的日期时间
System.Globalization.Gregorianalendar
您的格式字符串错误。换成
insert = DateTime.ParseExact(line[i], "M/d/yyyy hh:mm", CultureInfo.InvariantCulture);
这可能与此相关SO线程中介绍的文化问题相同:
您已经指定了区域性,因此请尝试跳过斜杠。这是因为您在
行[i]
中有美式格式的日期,在格式字符串中有英式格式的日期
11/20/2011
M / d/yyyy
我猜您可能需要将FormatString更改为:
"M/d/yyyy h:mm"
试试这个
var insert = DateTime.ParseExact(line[i], "M/d/yyyy h:mm", CultureInfo.InvariantCulture);
这对我有效,不更改提供的日期字符串。对我有效,可能行列表中的字符串格式不正确。你是说M/d/yyyy
还是d/M/yyyy
他没有任何前导零example@Sign你说得对!我改变了答案。谢谢你提到。哇,我真不敢相信我错过了。结果显示日期是在M/d/yyyy而不是d/M/yyyy。我没有注意到,因为前几个日期是在月初。@Jonathan:我只发现了,因为你的问题的第一个版本中有一个类似“2011年10月20日”的日期。后来您将其更改为“7/7/2011 10:48”。-)哦,哈哈,我改变了它,以显示格式没有前导零。我甚至没有注意到我第一次使用的日期。