2

さまざまな日付形式を解析しようとしています。曜日番号、時刻、年のコンポーネントは一貫していますが、曜日と月はデバイスによって異なります。これらはiPadからの結果の例です

Isn Mac 11 16:25:58 2013

Ahd Mac 10 18:34:41 2013

Sab Mac 09 18:44:34 2013

Jum Mac 08 16:57:33 2013


Fri Mar 8 16:49:46 2013

Thu Mar 7 12:34:47 2013

Sat Jan 19 12:21:58 2013

英語のものはうまく解析されますが、マレーシア語(マレー語)のものは決して解析しません

私はそれをデバッグするためにこれを使用していました:

        var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

        foreach (var culture in allCultures)
        {
            if (DateTime.TryParseExact("Isn Mac 11 16:25:58 2013", "ddd MMM d HH:mm:ss yyyy", culture, DateTimeStyles.None, out result))
                return;
        }

理想的には、この形式で可能なすべての言語を処理し、言語固有のコードを記述する必要はありません。

次のカルチャコードを使用してマレーシアの日付を手動で解析してみました:ms ms-BN ms-MY

何か案は?

御時間ありがとうございます

4

2 に答える 2

2

CultureInfoこれは、マレーシアの文化のデータのバグである可能性があります-AbbreviatedDayNames配列は次のようになります。

Ahad 
Isnin 
Sel 
Rabu 
Khamis 
Jumaat 
Sabtu 

あなたはそれIsn自体が存在しないことはないでしょう-それはIsninです。

比較のために、見てくださいDayNames

Ahad 
Isnin 
Selasa 
Rabu 
Khamis 
Jumaat 
Sabtu 

私はこれらを以下から選びました:

System.Globalization.CultureInfo.GetCultureInfo("ms-MY").DateTimeFormat

解決策として、終日の名前を使用できるかどうかを確認してください。例Isninの代わりにを使用するとIsn、正しいDateTimeオブジェクトが返されます。

于 2013-03-11T11:45:37.110 に答える
1

私はあなたの日時をマレーシアの文化でテストしました。明らかに、文字列の曜日名が正しくありません。

var dt = new DateTime(2013,03,11,16,25,58);
var currCult = CultureInfo.CreateSpecificCulture("ms-MY");
var str = dt.ToString("ddd MMM d HH:mm:ss yyy", currCult);
// ---> "Isnin Mac 11 16:25:58 2013"

イムホIsn!= Isnin

于 2013-03-11T11:48:22.553 に答える