无法将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
的格式。
可以通过对当前线程应用新的文化(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);
更多格式规范参见自定义日期和时间格式字符串