0

我正在开发一个 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 日期格式

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

谁能帮我解决这个问题?

4

1 回答 1

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);

有关更多格式规范,请参阅自定义日期和时间格式字符串

于 2013-06-07T07:48:31.063 回答