2012-03-15 118 views
1

我正在使用itextsharp从pdf文件中提取修改后的日期。字符串以这种格式返回:D:20120224093340。我想这个字符串解析成日期时间,像这样:尝试解析日期时出错

string modDate = ""; 

reader.Info.TryGetValue("ModDate", out modDate); 

System.Globalization.CultureInfo provider = 
System.Globalization.CultureInfo.InvariantCulture; 

pdfModDate = DateTime.ParseExact(formattedDate, "D:yyyyddMMHHmmss", provider); 

但我收到此错误信息:用字符串表示的日期时间是无法在日历System.Globalization.GregorianCalendar支持。

我不知道这个错误的含义。此代码应工作...

+0

你没有做任何modDate – Jmyster 2012-03-15 22:54:34

+0

尝试解析日期“手动”与您的条件。您将获得2012年第24个月的第2天。这应该可以帮助您了解错误的含义。 – Vache 2012-03-15 22:54:40

回答

8

你一个月是24,这是不由格里高利日历支持:-)

D:20120224093340 
D:yyyyddMMHHmmss 
     ^^ 
+0

哇,不知道我怎么忽略了。谢谢! – broke 2012-03-15 23:04:11

+1

@broke:喝咖啡休息时间:D – CodeZombie 2012-03-15 23:04:57

+0

它发生在我们所有人身上! – 2012-03-16 00:03:28

2

您提供的是按以下格式的日期:

D:yyyyMMddHHmmss 

不是英文格式MM/DD/YYYY

1

您可以尝试从字符串的开头剥离D :. ParseExact函数将大写字母D识别为日期格式字符串中的特殊字符。根据MSDN“D”是长日期格式的简称。

另外,您需要切换日期和月份。他们返回的顺序是年,月,日,时,分,秒。

3

尝试"D:yyyyMMddHHmmss"。你有一天和一个月切换。

1
string date = "D:20120224093340"; 
     System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture; 
     DateTime dateTime = DateTime.ParseExact(date,"D:yyyyMMddHHmmss",provider); 

切换ddMM后。