0

これは私の最初の投稿です。アプリケーションは winform です。アプリケーションのカルチャを en-GB に設定しましたが、確認して保存しているときに en-US に戻します。エラー String was not recornized as a valid DateTime が表示されます。

CultureInfo currentCulture = new CultureInfo("en-US");
string strCheckDate = CheckConvertCulture(input);
string date = DateTime.Now.ToString("M/d/yyyy");

if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null)> DateTime.ParseExact(date,currentCulture.ToString(),null))
{
      return false;
}
else
{
      return true;
}

ここで何が間違っているのですか

これは私のconverCurrentCultureコードです

string strdate = string.Empty;
CultureInfo currentCulture = CultureInfo.CurrentCulture;
System.Globalization.DateTimeFormatInfo usDtfi = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat;
if (currentCulture.ToString() != "en-US")
{
    strdate = Convert.ToDateTime(Culturedate).ToString(usDtfi.ShortDatePattern);
}
else
{
    strdate = Culturedate;
}

    return strdate;

これは私がそれを機能させるために行ったことですが、ユーザーが2013年2月29日などの無効な日付を選択した場合、機能するかどうかはわかりません.

CultureInfo currentCulture = new CultureInfo("en-GB");
string date = DateTime.Now.ToString("dd/MM/yyyy", currentCulture);

アプリケーションはデフォルトでen-GBであるため、

if (DateTime.Parse(input) > DateTime.Parse(date))
{
  return false;
}
else
{
  return true;
}
4

1 に答える 1

0

これが実際にあなたのコードである場合:

CultureInfo currentCulture = new CultureInfo("en-US");
string strCheckDate = CheckConvertCulture(input);

if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null)

問題はParseExactにあり、これは次のように変換されます

if (DateTime.ParseExact(strCheckDate, "en-US", null))

特定の形式で日付を指定し、それを解析することをお勧めします。

string format = "MM/dd/yyyy HH:mm:ss";
string strCheckDate = input.ToString(format);

// See note below about "why are you doing this?    
if (DateTime.ParseExact(strCheckDate, format))

私の大きな質問は、なぜあなたはこれをしているのですか? 2 つの日付がある場合、両方を文字列に変換してから日付に戻して比較するのはなぜですか?

return (input > date);

DateTime.ParseExact の適切な使用方法については、 MSDN のドキュメントを参照してください。

于 2013-03-15T12:10:19.430 に答える