1

私は正常に動作するPCで以下のコードのように見えるコードを持っています:

DateTime.Parse("10/10/2012");

私はそれを他のマシンにコピーしました、そしてそれは日付変換を非難する何かが間違っていると言います。それを回避するために私がしなければならなかったことは、以下を使用することです。

DateTime.TryParseExact("10/10/2012", "dd/MM/yyyy", null);

このようなことを制御するc#またはマシンに構成があるかどうか誰かが知っていますか?(または、2台のコンピューター間で.netバージョンが異なる場合がありますか?ただし、両方のマシンでMs Visual Studio 2008を使用したので、両方のマシンで同じであると確信しています)。

私は私のプログラムにいくつかの厳密な例外を作るWindows自体のグローバル構成について話している。誰もがこれについて知っていますか?

4

4 に答える 4

0

(あなたはミキシングParseExactしていTryParseExactます。)

違いCultureInfo.CurrentCultureは、世界のさまざまな地域がさまざまな方法で日付を書き込むことに由来します。

言うParseExact("10/10/2012", "dd/MM/yyyy", null)ことさえ問題になる可能性があります。最初の設定を試しましたか

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");

そして、上記を実行しますParseExactか?この文化にDateSeparatorはないので失敗します。"/"それを修正するには、どちらか

DateTime.ParseExact("10/10/2012", @"dd\/MM\/yyyy", null)

または言う

DateTime.ParseExact("10/10/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture)

1つ目は、スラッシュを「エスケープ」することで機能する/ため、文字通りのスラッシュになり、現在のスラッシュに変換されませんDateSeparatorDateSeparator2つ目は、が実際にであることがわかっている不変の文化を与えることによって機能し"/"ます。

添加:

コードを設定したことがない場合CurrentCulture、その値はオペレーティングシステムの地域と言語の設定によって異なります。Windowsを実行していると思いますか?詳細は、Windowsの正確なバージョンによって異なる場合があります。

于 2012-11-25T10:05:06.717 に答える
0

入力が常に同じであり(たとえば、en-us形式)、ユーザーの日付と時刻の形式設定から抽象化したい場合DateTime.TryParseExactは、適切な方法です。

于 2012-11-25T09:37:07.970 に答える
0

これを試して、文化的に不変の日時を設定できます:-

 using System.Globalization;
//...
 DateTime _datetime = DateTime.Now;
string _formattedDateTime = _datetime.ToUniversalTime().ToString("s", 
DateTimeFormatInfo.InvariantInfo) + "Z";
于 2012-11-25T09:38:23.357 に答える
0

日付を解析するときは、システムの現在のカルチャが使用されます。2台のマシンは異なる文化を持っているに違いありません。

于 2012-11-25T09:36:10.283 に答える