2013-06-07 6 views
0

Я разрабатываю SAP-аддон, который читает листы excel, а затем загружает информацию в матрицу. Пользователь может редактировать информацию о матрице, а затем сохранять данные в базе данных SAP.Невозможно преобразовать datetime yyyyMMdd в ddMMyyyy для матрицы SAP

Столбцы даты на листе Excel, например. DocDate все в формате yyyyMMdd, например. 20120813.

Я использую следующий код для разбора даты с даты столбцов в формате SAP в DDMMYYYY:

// Метод, чтобы получить дату из строки

private DateTime GetDateFromString(string dateString) 
{ 

string format = "yyyyMMdd"; 

DateTime d = DateTime.ParseExact(dateString, format, System.Globalization.CultureInfo.InvariantCulture); 

return d; 
} 

Однако, когда данные появляется на моей матрице, она находится в формате yyMMdd в столбцах матрицы даты. Тогда я не смогу преобразовать в действительный формат даты SAP, используя

_oPCH.DocDate = GetDateFromString(docDate.Value); потому что я получаю строку даты ошибки не в правильном формате. Применяя точки останова к моему коду, я получаю форматы, которые я пытаюсь проанализировать как 12.08.13.

Может ли кто-нибудь помочь мне решить эту проблему?

+0

является '_oPCH.DocDate' действительно ожидает' DateTime'? – V4Vendetta

+0

Свой бизнес-объект SAP и ожидает DateTime. –

ответ

2

Это поведение может быть изменено путем применения новой культуры к текущему потоку (пользовательский интерфейс или простой в зависимости от вашего контекста).

Новая культура должна реализовать желаемый вами DateTimeFormat, вам нужно будет проверить все поля в вашем случае.

Вместо «en-US» вы можете использовать «» как в пустой строке для инвариантной культуры, на ваш выбор.

DateTime now = DateTime.Now; 
    Console.WriteLine(now); 
    CultureInfo sapCulture = new CultureInfo("en-US", true); 
    sapCulture.DateTimeFormat.ShortDatePattern = "ddMMyyyy"; 
    //sapCulture.DateTimeFormat.FullDateTimePattern = sapCulture.DateTimeFormat.ShortDatePattern + " HH-mm-ss"; 
    sapCulture.DateTimeFormat.LongTimePattern = "HH-mm-ss"; 
    //sapCulture.DateTimeFormat.ShortTimePattern = "HH-mm-ss"; 
    System.Threading.Thread.CurrentThread.CurrentCulture = sapCulture; 
    //System.Threading.Thread.CurrentThread.CurrentUICulture = sapCulture; 
    Console.WriteLine(now); 

Для более спецификаций формата см Custom Date and Time Format Strings

+0

Спасибо Alexandru Lache. Я не понимал, что происходит, но через какое-то время я понял это с вашей помощью. –

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