无法将日期时间yyyyMMdd转换为SAP矩阵的ddMMyyyy

时间:2013-06-07 05:23:29

标签: c# sap

我正在开发一个SAP插件,用于读取Excel工作表,然后将信息加载到矩阵中。用户可以编辑矩阵上的信息,然后将数据保存到SAP数据库。

Excel表格上的日期列,例如DocDate的格式均为yyyyMMdd,例如20120813

我使用以下代码将日期列中的日期解析为ddMMyyyy的SAP格式:

//从字符串

获取日期的方法
 private DateTime GetDateFromString(string dateString)
{

string format = "yyyyMMdd";

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

return d;
}

但是,当数据显示在我的Matrix上时,它在日期矩阵列上的格式为yyMMdd。然后,我无法使用

转换为有效的SAP日期格式

_oPCH.DocDate = GetDateFromString(docDate.Value);因为我收到的错误日期字符串格式不正确。将断点应用于我的代码,我得到的格式是我试图解析为12.08.13。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

通过将新文化应用于当前线程(UI或简单取决于您的上下文),可能会改变此行为。

新文化应该实现您想要的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