2015-01-28 2 views
0

После долгих часов, пытаясь найти несколько предложений, найденных здесь в SO, а также через google, я превращаю сообщество SO.DateTime.ParseExact String не признан действительным дата-время

У меня есть проект Asp.Net, который считывает данные из базы данных в классы poco. Я не могу преобразовать строковое значение, представляющее DateTime, в соответствующее значение в C#. Вот не мой код:

string value = get_value_from_repository(fieldname, repository); 
// value = "21/1/2015 12:00:00 πμ" which means 21-jan-2015 12:00:00 am (greek) 

DateTime.ParseExact(value, "dd/M/yyyy h:mm:ss tt",CultureInfo.InvariantCulture, DateTimeStyles.None); 

Независимо от того, какой формат я пытаюсь использовать («дд/M/гггг ч: мм: сс сс», «d/M/гггг чч: мм: сс сс», " dd/M/yyyy HH: mm: ss tt ") Я все еще получаю эту ошибку. Любое предложение в правильном направлении было бы весьма полезно. Спасибо.

+0

Вы уверены, что 'πμ' не означает pm? (Извините, я знаю, что это не поможет ...) – Rawling

+0

Как инвариантна культура «πμ»? Может быть, вы должны использовать греческую информацию о культуре? –

ответ

2

Вы проходите в Инвариантной культуре, которая не признает греческих символов для «я» - это мое предположение. Попробуйте вместо этого использовать объект Culture CultureInfo (возможно, CurrentCulture, если он установлен правильно).

0

Вы можете использовать греческий DateTimeFormat:

var greek = new CultureInfo("el-GR").DateTimeFormat; 
DateTime dt = DateTime.ParseExact(date, "dd/M/yyyy h:mm:ss tt", greek, DateTimeStyles.None); 

Это работает, как ожидалось, и возвращает 21-Jan-2015. Если грек DateSeparator не будет /, вам также необходимо использовать '/' вместо / are replaced with the localized date separator.

+0

Спасибо! ваше предложение решило мою проблему. В моих таблицах в моей базе данных дата хранится как «2015-01-21», я гость, когда .Net framework читает это значение, он переводит его в строку «21/1/2015 12:00:00 πμ». Есть ли глобальный способ сказать структуре писать «21/1/2015 12:00:00 am»? – TheSoul

+0

Не нужно скрывать символ '/' Тим :). 'el-GR' имеет'/'как' DateSeparator'. –

+0

@ SonerGönül: да, я это заметил. Вот почему я упомянул _ «Если греческий DateSeparator не будет/вы также должны использовать«/»вместо этого», я упомянул об этом в любом случае, если ему нужно также преобразовать даты другой культуры. –

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