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

C# 无法将SAP矩阵的日期时间yyyyMMdd转换为ddMMyyyy,c#,sap,C#,Sap,我正在开发一个SAP插件,它读取excel表格,然后将信息加载到矩阵中。用户可以编辑矩阵上的信息,然后将数据保存到SAP数据库 Excel工作表上的日期列(例如DocDate)均采用yyyyMMdd格式,例如20120813 我使用以下代码将日期列中的日期解析为ddMMyyyy的SAP格式: //方法从字符串中获取日期 private DateTime GetDateFromString(string dateString) { string format = "yyyyMMdd"; Da

我正在开发一个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;
}
但是,当数据出现在我的矩阵上时,日期矩阵列的格式为yyMMdd。然后,我无法使用转换为有效的SAP日期格式

\u oPCH.DocDate=GetDateFromString(DocDate.Value)因为我得到的错误日期字符串格式不正确。将断点应用于代码,我将尝试解析的格式设置为12.08.13


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

将新的区域性应用到当前线程(UI或simple,取决于您的上下文)可能会改变此行为

新的区域性应该实现您想要的
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);

有关更多格式规范,请参见

is
\u oPCH.DocDate
是否真正需要一个
DateTime
?这是一个SAP业务对象,需要一个DateTime。谢谢Alexandru Lache。我不明白发生了什么事,但过了一段时间,在你的帮助下,我明白了。