高ソルブ文化 (hsb) を使用すると、文字列に変換された DateTime オブジェクトは "d. M. yyyy H.mm.ss 'hodź.'" の形式を使用します。たとえば、ToString("G") は "31. 12. 2011 5.06.07 hodź." を返します。2011 年 12 月 31 日午前 05:06:07 の場合。
問題は、そのような文字列を DateTime に変換しようとしても true にならないことです。"1. 1. 2011" や "1.1.2011" のような単純な文字列でさえ、成功しません。そして、誰かが変換/パーシング時に文化を渡すことを提案した場合に備えて: 私はもちろんそれを行いました.
「1.2.3」を解析しようとすると、現在の日付の時刻が 01:02:03 になります。
私はそれをバグだと考えています。それとも誰かが何が間違っているのか知っていますか?
Windows 8 RTM マシンで .NET 4.5 RTM を使用しています。
サンプル:
DateTime date = DateTime.Now;
CultureInfo culture = new CultureInfo("hsb");
string dateString = date.ToString("G", culture);
DateTime convertedDate;
bool dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results false although the date string was read by
// ToString("G") (i.e. '20. 9. 2012 12.28.10 hodź.') and should be okay
dateString = "1. 1. 2000";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results in false although the date string should be okay
dateString = "1.1.2000";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results also in false
dateString = "1.2.3";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay + ": " + convertedDate);
// This results strangely in true. The converted date is the current date
// with time 01:02:03.