我正在开发一个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。
有人可以帮我解决这个问题吗?
答案 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