0

Excel シートを読み取り、情報をマトリックスにロードする SAP アドオンを開発しています。ユーザーは、マトリックスの情報を編集し、データを 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 に答える