2009-03-01 10 views
1

私の.Net .exeは、ファイルを読み込んで情報をSQL DBに保存するために使用されます。 devシステムでは、デフォルトの設定と米国のロケールにあるファイルがあり、うまくいきました。開発ロケールと異なるロケールにアプリケーションを配置する

私は同じ.exeファイルを使用し、デフォルトの設定とファイルが英国のロケールである私たちの製品版のサーバーに展開。

私は、ローカルシステムのフォーマット、つまり米国のMM/dd/yyyyと英国のdd/MM/yyyyの形式で日付を解析する必要があるDatetime.Parseを使用しました。

しかし、英国の形式で日付を解析している間、それは例外を与え、誰かが私が間違っているところをやっている私を助けることができます。

はまた、私はその後、英国へのdevのマシンのデフォルト設定を変更したときに.exeファイルをコンパイルし、それが働いた同じ展開という奇妙な何かに気づきました。

なぜ私はそれが働いたか教えていただけますか?

+0

どのような種類の例外があるか教えていただけたら助かります。ソースの1行または2行。 –

答えて

1

あなたDateTime.Parse()メソッドにするIFormatProvider(可能System.Globalization.CultureInfoのすなわち、インスタンス)を供給する必要があります。 btw、私はTryParseを使用することをお勧めしますか、正確にあなたのdatetime文字列が到着する方法を知っている場合は、TryParseExactを使ってください。

0

最高の解決策は、app.configでロケールを指定し、マシンの設定をオーバーライドすることです。

+0

これは英国の顧客にとってどのように最適ですか?おそらく最も簡単です。 –

+0

まあ...あなたはポイントがあります。 UPS! –

0

さらに詳細な説明はありませんが、アプリケーションサーバー SQL Serverが予想よりも別の言語設定で実行されました。アプリケーションサーバーのカルチャ設定が正しくなっても、SQL Serverの日付時刻の形式はまだ予想どおりではありません。