私のアプリケーションでstringからDateTimesの変換を処理させようとしています。さまざまな文化に対応するために、私は変換を使用したい文化を指定します。私はそれをカバーしていたと思っていましたが、長くて短い日付パターンのように、そのシステムが "en-US"をどのように定義しているかの特定の要素を変更できることを発見しました。 これらのケースでは、解析される日付がMM/DD/YYYY形式の場合、以下のコードは機能しません。 「EN-US」のデフォルトの定義にアクセスし、ユーザー定義のバージョンの代わりにそれをロードする方法はありますか、私はParseExact
のようなものに追いやらいます:アクセスするには特定のシステムで定義されていない、デフォルトのen-USカルチャですか?
CultureInfo c = new CultureInfo("en-US");
string[] permissions = Regex.Split(permissionData, @"\r\n");
foreach (string permission in permissions)
{
string[] details = permission.Split(',');
this.Add(new WPermission()
{
WRegion = Convert.ToInt32(details[0],c),
StartDate = Convert.ToDateTime(details[1],c),
EndDate = Convert.ToDateTime(details[2],c)
});
}
私の質問はありますか?メモとして、私は解析している文字列のソース形式を制御することはできません。それはサードパーティーです。
ありがとうございます!
ParseExactはあなたのために機能しましたか?上のコードがうまくいきません... –
答えに示唆されているように 'InvariantCulture'を使用してしまいました。問題は、 "en-US"のマシン固有の実装をカスタマイズできるため、比較の基礎として使用する有効な定数ではないということです。 –