-1

私のプログラムは、私たちのスタイルと私たちのスタイル形式だけでなく、私たちのスタイル(mm/dd/yyyy)と非私たちのスタイルも比較できる必要があり(dd/mm/yyyy)ます。どうやってするの?これまでのところ、これは私が持っているものであり、同じスタイルを比較するためにのみ機能します:

DateTime my_dt = new DateTime(); // this can be mm/dd or dd/mm
                                 // depending on where it run
DateTime new_dt = Convert.ToDateTime(us_dt);
int compare = DateTime.Compare(new_dt, my_dt);

my_dt が dd/mm の場合、エラーが発生しました:

System.FormatException: String was not recognized as a valid DateTime.
   at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
   at update.Program.Process(String ftp_path, String action)
4

3 に答える 3

1

Format は、日時文字列表現のプロパティですdt.ToString("mm/dd/yyyy")

System.DateTimeフォーマットにとらわれず、独立しており、認識していません。したがって、その任意の 2 つのインスタンスを比較できます。

于 2013-09-25T20:36:24.400 に答える
1

オブジェクトの比較はDateTime本当の問題ではなく、解析です。ここに2つの厳密な形式があるとすれば、つまりdd/mm/yyyy、またはmm/dd/yyyy以下が機能するはずです

DateTime my_dt = null;
// parse in either US/Non-US format (culture-independant)
DateTime.ParseExact(someDateStr, new[] { "dd/MM/yyyy", "MM/dd/yyyy" }, CultureInfo.InvariantCulture, DateTimeStyles.None out my_dt);
// parse in US format (culture-dependant)
DateTime dt = DateTime.Parse(result3, new CultureInfo("en-US"));
// compare the results
int compare = DateTime.Compare(my_dt, result3);
于 2013-09-25T20:40:50.933 に答える
0

あなたの質問は、あなたの実際の問題であると私が考えるものを実際には示していません。異なるカルチャ形式の 2 つの日付文字列があり、それらを比較したいと思います。

まず第一に、文字列のカルチャまたは形式を知る必要があります。そうしないと、予測できない結果が生じる可能性があります。

文化は、LCID によって識別できます。ここでリストを見つけることができます。

たとえば、英語 (米国) の日付文字列と英語 (カナダ) の文字列があるとします。次のように比較できます。

string americanDateString = "12/31/2013";
string canadianDateString = "31/12/2013";

DateTime americanDate = DateTime.Parse(americanDateString, System.Globalization.CultureInfo.GetCultureInfo(1033); // 1033 = English - United States culture code

DateTime canadianDate = DateTime.Parse(canadianDateString, System.Globalization.CultureInfo.GetCultureInfo(4105); // 4105= English - Canada culture code

int compare = DateTime.Compare(americanDate, canadianDate);

編集: abatishchev の回答に従って、ロケールの短い文字列 (例: "en-US" または "en-CA") を使用して CultureInfo を検索することもできます。

于 2013-09-25T20:44:51.427 に答える