2012-03-15 8 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); 

Но я получаю сообщение об ошибке: DateTime представлена ​​строкой не поддерживаются в календаре System.Globalization.GregorianCalendar.

Я понятия не имею, что означает эта ошибка. Этот код должен работать ...

+0

Ваш не делать ничего с modDate – Jmyster

+0

Попробуйте разобрать дату «вручную» с вашими условиями. Вы получите второй день 24-го месяца 2012 года. Это поможет вам понять, что означает ошибка. – Vache

ответ

8

Ваш месяц 24, которая не является поддержанный григорианским календарем :-)

D:20120224093340 
D:yyyyddMMHHmmss 
     ^^ 
+0

Ничего себе не знаю, как я этого не замечал. Благодаря! – broke

+1

@broke: Время для кофе-брейка: D – CodeZombie

+0

Это случается со всеми нами! –

2

Дата Предоставленный в следующем формате:

D:yyyyMMddHHmmss 

Не английский формат ММ/дд/гггг

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.

Смежные вопросы