2009-07-02 5 views
0

DBに日付/数字などの文字列表現を保存する状況があります。アプリケーションは複数の国で、時には異なる言語で同じDBを使用している国では、CurrentCulture.Nameをレコードに格納して、クライアント側で変換するときに正しいカルチャ情報を使用して変換するようにします。例:新しいCultureInfo(string Name)コンストラクタ - .NET(C#)

DateTime dt = Convert.ToDateTime(value、new CultureInfo(value.ClientCulture));

これはうまくいきます。新しいCultureInfo(value.ClientCulture)を呼び出すと、.NET FrameworkまたはWindowsからCultureInfoが取得されているのですか?私はWindowsからの呼び出しで、それらの言語がインストールされていないと、問題が発生する可能性があることを心配しています。 .NET Framework自体から呼び出す場合、問題はありません。

おかげで、私は文化がマシン上に存在しないため、コンストラクタは、ArgumentExceptionがスローをすると仮定したいMSDNから判断

答えて

-1

CultureInfo classを読んですぐに、CultureInfoオブジェクトがNameとUseUserOverrideだけにシリアライズされているように見えます。つまり、文化に関する実際の情報はWindows内に格納され、正しい名前に依存しています。

0

私はあなた場合は、日付

と文化の情報を格納する必要はないと思う「クライアント側で変換するときになるように、私はレコードにDBにCurrentCulture.Nameを保存します」

ほとんどの場合、日付の形式(表示方法)は、ユーザーの地域設定によって異なります( )。 (ユーザーはそれらを変更できる必要があります)。

ユーザーの地域設定が何であるかを確認してください。

は、あなたの質問に答えるために:

CultureInfo.CurrentCultureプロパティから返されたCultureInfoインスタンスがWindows®の地域のオプション]で選択したユーザは、(図1に示す)のロケールに基づいています。これはプログラマのための「ユーザーロケール」と呼ばれ、Windows XPおよびWindows Server 2003の標準と形式の「言語」と呼ばれます。

ユーザーが使用する言語のため、インストールされている言語について心配するべきではありません使用は常にインストールされています! (同上地域の設定を選択)

http://msdn.microsoft.com/en-us/magazine/cc163824.aspx

3

を参照してください。正しい答えは次のとおりです。はデシベルでないストアユーザ固有の日付時刻文字列を行います!

現在、すべてのデータベースにdatetime型があるため、現在のユーザーロケールを使用してstringをdatetime値に変換し、この値をdb(文字列ではなく)に入れる必要があります。

dbがdatetime型をサポートしていない場合や、他の要件がある場合(ただし、私が作成することはできません)、日付時刻を不変のdatetime文字列に変換し、 db。

DateTime dt = Convert.ToDateTime(value, CultureInfo.GetCultureInfo(value.ClientCulture)); 
+1

私は '' GetCultureInfo()を使用してのパフォーマンス上の利点についての詳細を学ぶのではなく作成に興味がある:

ところで、高速化の理由のために、あなたの代わりに新しいのCultureInfoのインスタンスを作成するGetCultureInfoメソッドを使用する必要があります'new CultureInfo'インスタンスです。あなたは説明できますか? –

関連する問題