6

C# WinForms アプリケーションを作成しました。

私のコンピューターでは、次のように動作します。

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy",  null)

しかし、これはしません:

DateTime.Parse("13/05/2012")

クライアントのコンピューターでは逆になっています。これは機能します:

DateTime.Parse("13/05/2012")

しかし、これはしません:

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy",  null)

エラーは次のように述べています。

String was not recognized as a valid DateTime.

この問題に関する情報をインターネット上で見つけることができませんでした。このプログラムは .Net Framework 4 を使用し、x86 アプリケーションです。私は Windows 8 x64 を実行しており、クライアントは Windows 7 x64 を実行しています。

なぜこれが起こるのか、誰にも手がかりがありますか?

ありがとう。

4

2 に答える 2

12

異なるコンピューターで異なる動作が得られる理由は、それらが異なるカルチャで実行されているためです。両方のコンピューターで次のコード行を実行して、何か違うものを出力するかどうかを確認してください: (ideone)

System.Console.WriteLine(CultureInfo.CurrentCulture);

出力 (例):

en-US

カルチャは多くのことを指定しますが、その 1 つが日付区切り記号です。すべてのユーザーに対して一貫した動作が必要な場合は、カルチャを指定してみてください: (ideone)

CultureInfo cultureInfo = CultureInfo.InvariantCulture; // or whatever you prefer
DateTime dateTime = DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", cultureInfo);

上記のコードは、次の using ステートメントがあることを前提としています。

using System;
using System.Globalization;
于 2012-05-17T20:39:14.563 に答える
11

気をつけて; カスタムの日時フォーマット文字列では、mm指定子は「月」ではなく「分」を表します。MM何ヶ月も使用する必要があります。

DateTime.ParseExact("13/05/2012", "dd/MM/yyyy",  CultureInfo.InvariantCulture)
于 2012-05-17T20:41:50.893 に答える