C# DateTime.ParseExact

问题描述 投票:0回答:5

我有一个制表符分隔的文件,正在解析该文件,然后将其插入数据库中。当我遇到日期列时,我无法解析它。

我的代码是:

var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture);

line[i]
中的字符串格式为:
7/7/2011 10:48
,
10/20/2011 6:27

我得到的例外是

日历中不支持字符串表示的DateTime System.Globalization.GregorianCalendar.

c# parsing datetime
5个回答
121
投票

您的格式字符串错误。改为

insert = DateTime.ParseExact(line[i], "M/d/yyyy hh:mm", CultureInfo.InvariantCulture);

4
投票

那是因为您在

line[i]
中有美国格式的日期,在
FormatString
中有英国格式的日期。

11/20/2011
M / d/yyyy

我猜您可能需要将 FormatString 更改为:

"M/d/yyyy h:mm"

1
投票

这可能与相关 SO 线程中提出的文化问题相同:为什么 DateTime.ParseExact() 不能使用“M/d/yyyy”解析“9/1/2009”

您已经指定了区域性,因此请尝试转义斜杠。


1
投票

试试这个

var  insert = DateTime.ParseExact(line[i], "M/d/yyyy h:mm", CultureInfo.InvariantCulture);

0
投票
var insert = DateTime.ParseExact(line[i].toString(), "d/M/yyyy h:mm", CultureInfo.InvariantCulture);
© www.soinside.com 2019 - 2024. All rights reserved.