2015-02-10 3 views
0

полностью перепутались с Lotus Notes DXL метки времени формат ... Учитывая это Отметка экспортируемого DXL из документа Lotus Notes, который выглядит следующим образом:Преобразование DXL метку времени C# DateTime

20141104T132939,49+01 

Попытка получить формат работы с DateTime.ParseExact, как:

DateTime.ParseExact(dateStr.Substring(0, 13), "yyyyMMddThhmm", System.Globalization.CultureInfo.InvariantCulture).ToString("dd.MM.yyyy hh:mm"); 

Но не повезло >>>System.FormatException "no valid DateTime format".

Может ли C# обрабатывать вышеуказанную временную метку, как есть?

+0

Первая часть кажется простой - вы должны процитировать 'T',' hh' должен быть 'HH', и в идеале вы должны включить и секунды ... но знаете ли вы, что', 49 + 01 'означает указать? –

+0

Правильно, не знаю, что делать с частью за запятой ... Секунды на самом деле не нужны в текущем приложении, но было бы неплохо иметь, также. :) Нужно ли мне сначала подстроить SubString? Отладка показывает мне, что сокращение SubString, похоже, не нужно делать, но оно работает ... – SiL3NC3

+0

Цитата помогает, и Исключение уходит, также меняя «hh» на «HH». Поэтому, если вы поместите это как ответ, я задаю этот вопрос. Большое спасибо за то, что помогли мне! – SiL3NC3

ответ

1

Проблема заключается в ваш текстовый формат - вы использовали hh, который является 12-часовой часы, но у вас есть значение 13. Вы хотите HH, который является 24-часовой формат времени. Я также рекомендую цитируя T как вы просто хотите буквальный T характер, а также принимая следующие два символа для второй:

DateTime dateTime = DateTime.ParseExact(
    dateStr.Substring(0, 15), 
    "yyyyMMdd'T'HHmmss", 
    CultureInfo.InvariantCulture); 

Я тогда предложил сохранить его как DateTime так долго, как вы можете , только преобразование обратно в строку, где вам действительно нужно отобразить это для клиента.

+0

Работает! Спасибо. – SiL3NC3