Umm al-Quraカレンダーで日時の動作がどのように機能するのか、バグかどうか不明なために問題があるかどうかはわかりません。アラビア文化の日時解析で期待値が返されない
私は、現在、内部のユーティリティクラスが現在のカルチャに関係なく値を適切に解析することを保証するためのテストを作成しています。
以下のコードでは、dt1はdt2と等しくなります。
public void ArabicTesting()
{
CultureInfo culture = new CultureInfo("ar");
// Initialize a new datetime (04/01/2048 06:21:01 AM)
DateTime dt1 = new DateTime(2048, 4, 1, 6, 21, 1);
// Convert the datetime to a string using arabic cultureinfo
// string ends up being "17/06/70 06:21:01 ص,"
string dt2_string = $"{dt1.ToString(culture.DateTimeFormat.ShortDatePattern)} {dt1.ToString(culture.DateTimeFormat.LongTimePattern)}";
// Parse the string
DateTime dt2;
DateTime.TryParse(dt2_string, culture, DateTimeStyles.None, out dt2);
}
問題がDateTime.TryParseが同じに表示されますが、期待されているものとは異なる値を持っている日時に文字列としてdatetime型を解析していることです。ここで
は何が起こっているかのスクリーンショットのカップルです:あなたは、両方の DT1と DT2プレビュー値を見ればは、彼らが現れると同じ「17/06/70 06:21:01ص "しかし、オブジェクトの実際の値はまったく異なっています。
これはMSのバグかどうかを知っている人ですか、それともDateTime.TryParseメソッドに正しい文字列の値を渡していないからですか?
'ShortDatePattern'の代わりに' LongDatePattern'を使うとどうなりますか?このシナリオではうまくいきました@Igor - ありがとうございます。@ dt1.ToString(culture.DateTimeFormat.LongDatePattern){dt1.ToString(culture.DateTimeFormat.LongTimePattern)} "; ' – Igor
@Igor私はまだ心配していますが、DateTimeのデフォルトのToStringメソッドが異なる日付の同じ値を返すというのは私にとっては問題に思えます。 アラビア文化の短い日付パターンを使用するのが標準ではありません。 – user2338408