実際の年の文字列を指定したときにDateTime.TryParseがfalseを返すのはなぜですか?

StackOverflow https://stackoverflow.com/questions/1013650

  •  06-07-2019
  •  | 
  •  

質問

以下のコードでは、関数にsTransactionDate =" 1999"を指定しています。そして、x / x / 1999の日付に変換しようとしています。

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

文字列が" 1999"の場合常に悲しい結果になります。アイデアはありますか?

役に立ちましたか?

解決

次のようなことを試してください( CultureInfo および DateTimeStyles を適切に調整します):

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)

他のヒント

方法について...

DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
    // Happy
}
else
{
    // Sad
}

...または単に...

DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy

" 1999"日付ではなく、1年です 1999年1月1日を試す

また、システムカレンダーで、解析しようとしている日付が存在することを確認します。 「1949年2月29日」と同じようにまた、カレンダーに存在しなかったためfalseを返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top