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

本文关键字:yyyyMMdd 时间 转换 ddMMyyyy 日期 SAP | 更新日期: 2023-09-27 18:17:23

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

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

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

//Method to get date from string
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的格式。

谁能帮我解决这个问题?

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

可以通过对当前线程应用新的文化(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);

更多格式规范参见自定义日期和时间格式字符串