問題タブ [invariantculture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 不変の日付に対して DateTime.Parse を強制的に失敗させる
最初は簡単に説明し、最後に詳細を説明します。次のコードを検討してください。
問題は、呼び出しが例外をスローするか、間違った値を返す可能性のある値があるかどうかcultureToTest
ですDateTime.Parse
。
環境:
これは一連の単体テスト用です。DateTime.Parse
カルチャを指定せずに呼び出すコード本体があります。私の懸念は、このコードがインバリアントまたは en-US カルチャで日付を渡されると、一部のカルチャでコードが失敗する可能性があることでした。私が提案した解決策は、そのコードを使用するように変更することでした
これらの場合。
変更を単体テストするには、元のDateTime.Parse(string)
コードを失敗させるカルチャを使用して新しいコードを呼び出し、変更されたコードが成功することを示す必要があります。
問題は、これをやってくれる文化がまだ見つかっていないことです。製造してみますが、もっと一般的な質問を先にしようと思いました。
c# - .ToString() の CultureInfo.InvariantCulture
現在、FxCop の問題を修正しているため、ToString()
.
現在、私のコードでは IFormatProvider として何も渡していないため、cultureinfo に値を渡さない場合は既定値が割り当てられ、CultureInfo を InvariantCulture として指定すると、どのカルチャにも依存しないという msdn の記事を読みました。
私の質問は、「デフォルトと CultureInfo.InvariantCulture は同じものですか?すべてのコードをデフォルトから InvariantCulture に置き換えることはできますか?」です。
元 :
2 行目と 3 行目は同じですか?
user-interface - IIS はエラー メッセージの言語をどのように判断しますか?
設定でカルチャと UI カルチャをインバリアント カルチャに設定して、IIS 7.5 で ASP.NET Web サイトを実行しています。クライアント ベースのカルチャは false に設定されています。
IIS サーバーはドイツ語の Windows Server 2008 R2 で実行されています。私のマシンは英語版の Windows 8.1 を実行しており、Firefox は en-us コンテンツを最初に受け入れるように設定されています。
アプリがエラー メッセージを生成する場合、このメッセージはドイツ語です。IIS のカルチャ設定を変更することで、強制的に英語にすることができます。クライアントベースの文化をオンにするかオフにするかに関係なく、常にドイツ語になります。
同様の質問への回答では、不変の文化は英語に基づいていることが示唆されました。したがって、エラー メッセージは英語で出力されると想定します。
IIS は、出力するエラー メッセージの言語をどのように決定しますか?
java - JavaでintからStringへのカルチャ不変変換を行うには?
C# で (インバリアント カルチャを使用して) 整数を文字列に変換するには、次のようにします。
Javaで上記の操作に相当するものはありますか、それともInteger.toString(int)
本質的にカルチャ不変の変換を行いますか?
c# - 小数点を含む値の解析
DB からの金額の文字列値があります。私のシステムのローカル文化はポルトガル語 (pt-br) です。その結果、10 進値の金額は、たとえば 3.4 の場合は 3,4 と読み取られます。3.4 が表示されるようにこれを解析する必要がありますが、代わりに何を試しても 34 になります。解決策をあらゆる場所で検索し、以下を実装しようとしましたが、無駄でした。
// ここで、row[item.columnName] は、ループしている DataTable の行です
解決策 1:
解決策 2:
どちらも機能していないようです。これを達成できる他の方法があれば、誰かが提案できますか?
編集:
DB から取得している値が 10 進数であることが判明したため、LOC を以下に変更しました。
まだ機能していないようで、どこが間違っているのかわかりません。DotNetFiddleで同じことを試してみましたが、 まったく問題なく動作します。以下は私が試したコードです。
得られた結果は、予想どおり 1.35 でした。私は何を間違っていますか?
c# - 「DDMMYYYY」形式のC#解析日付?
次のコードを使用してフォーマットされている文字列の日付を解析しようとしていますが、フォーマットが有効な日付でDDMMYYYY
あっても false を返しています。16062001
DDMMYYYY
c# - 他のカルチャを使用する場合の間違った DateTime 解析
多言語サイトで EF を使用して、SP からオブジェクトに結果をマップしています。
カルチャが変更されたときの日付のマッピングに問題があることがわかりました。
より具体的には、ユーザーの文化に応じて、16/12/2015 09:06:15
またはと同じ日付を取得します。12/16/2015 09:06:15
私はこれに対する2つの解決策を知っています:
- 日付を文字列として取得し、 で解析し
CultureInfo.InvariantCulture
ます。 CultureInfo.CultureInvariant
リポジトリ メソッドを呼び出す前にカルチャを切り替えます。
そしておそらく別のオプションがあります:
Thread.CurrentThread.CurrentUICulture
とユーザーのロケールの両方を変更しているように見えThread.CurrentThread.CurrentCulture
ますが、UI のみを切り替える必要があると思います。しかし、これを変更すると何が壊れるかわかりません...
EF コンテキストにカルチャを設定するなど、代替手段はありますか?
更新:
クエリを実行する直前にThread.CurrentThread.CurrentUICulture
and を変更Thread.CurrentThread.CurrentCulture
しても、どちらも役に立たないようです。それは紛らわしいです...おそらく、EFは以前の時点でカルチャをキャッシュしますか?